← Dokumentace WAF / detections / ai-security-for-apps
Detekce PII
AI Security for Apps (dříve Firewall for AI) dokáže detekovat osobní údaje (PII) v příchozích LLM promptech. Existují dva přístupy k detekci PII a můžete je použít společně pro vrstvenou ochranu:
- Detekce založená na AI — AI Security for Apps používá AI model k identifikaci běžných typů PII v obsahu promptu. Tento přístup zachytí PII i tehdy, když se objeví v přirozeném jazyce nebo v neočekávaných formátech.
- Přesná detekce (regex) — Napíšete vlastní pravidlo WAF s regulárním výrazem nad surovým tělem požadavku. Tento přístup je ideální pro identifikátory specifické pro organizaci se známým, předvídatelným formátem.
Detekce PII založená na AI
Když je AI Security for Apps povoleno a požadavek dorazí na cf-llm označený endpoint, zkontroluje prompt na přítomnost PII a naplní dvě pole:
- LLM PII detected (
cf.llm.prompt.pii_detected) —truepokud byly nalezeny jakékoli PII. - Kategorie LLM PII (
cf.llm.prompt.pii_categories) — Pole konkrétních nalezených typů PII.
Detekci pohání AI model pro rozpoznávání pojmenovaných entit (NER). Viz cf.llm.prompt.pii_categories reference polí s úplným seznamem rozpoznávaných kategorií.
Podporované kategorie PII
| Kategorie | Popis |
|---|---|
BANK_ACCOUNT |
Číslo bankovního účtu |
CREDIT_CARD |
Číslo platební karty |
DATE_TIME |
Výraz s datem nebo časem |
DRIVER_LICENSE |
Číslo řidičského průkazu |
EMAIL_ADDRESS |
E-mailová adresa |
IP_ADDRESS |
IPv4 adresa |
LOCATION |
Fyzická poloha nebo adresa |
PASSPORT |
Číslo pasu |
PERSON |
Celé nebo částečné jméno osoby |
PHONE_NUMBER |
Telefonní číslo |
TAX_ID |
Daňové identifikační číslo |
US_SSN |
Americké číslo sociálního pojištění (SSN) |
URL |
URL |
Buďte konkrétní, abyste omezili falešně pozitivní výsledky
The cf.llm.prompt.pii_detected vrací true při detekci jakékoli kategorie PII — včetně širokých kategorií jako PERSON, DATE_TIME a LOCATION které se běžně objevují v normální konverzaci. Blokování pouze na základě tohoto pole povede u většiny aplikací k vysoké míře falešně pozitivních detekcí.
Místo toho stavte pravidla na cf.llm.prompt.pii_categories a uveďte pouze kategorie důležité pro váš případ užití. Například chatbot zákaznické podpory může potřebovat blokovat čísla platebních karet a SSN, ale jména osob a data může bezpečně ignorovat. Začněte s nejužší sadou kategorií, sledujte shody v Security Analytics a rozšiřujte jen podle potřeby.
Příklady pravidel — detekce založená na AI
Blokování všech požadavků obsahujících PII
-
When incoming requests match:
Pole Operátor Hodnota Detekováno LLM PII rovná se True Výraz při použití editoru:
(cf.llm.prompt.pii_detected) -
Akce: Block
Blokování pouze vybraných kategorií PII
-
When incoming requests match:
Pole Operátor Hodnota Kategorie LLM PII is in Credit CardVýraz při použití editoru:
(any(cf.llm.prompt.pii_categories[*] in {"CREDIT_CARD"})) -
Akce: Block
Logování e-mailových adres, ale blokování platebních karet a SSN
Vytvořte dvě vlastní pravidla:
-
Pravidlo s akcí Block a následující výraz:
(any(cf.llm.prompt.pii_categories[*] in {"CREDIT_CARD" "US_SSN"})) -
Pravidlo s akcí Log a následující výraz:
(any(cf.llm.prompt.pii_categories[*] in {"EMAIL_ADDRESS"}))
Přesná detekce PII (regex)
Pokud potřebujete detekovat vlastní formáty PII specifické pro vaši organizaci — například interní ID zaměstnanců, čísla záznamů pacientů nebo proprietární identifikátory účtů — můžete vytvořit WAF vlastní pravidlo pomocí regex shody na raw těle (http.request.body.raw pole).
Tento přístup doplňuje detekci založenou na AI porovnáváním předdefinovaných vzorů, včetně identifikátorů specifických pro organizaci.
Příklad: Detekce zaměstnaneckých ID
V následujícím příkladu organizace používá ID zaměstnanců ve formátu EMP- následované přesně šesti číslicemi (například EMP-482910).
Vytvoření vlastního pravidla s následující konfigurací:
-
When incoming requests match:
Pole Operátor Hodnota Raw tělo požadavku matches regex EMP-[0-9]{6}Výraz při použití editoru:
(http.request.body.raw matches "EMP-[0-9]{6}") -
Akce: Block
-
S typem odpovědi: Custom JSON
-
Tělo odpovědi:
{ "error": "Request blocked: employee ID detected in prompt." }
Omezení na konkrétní endpoint
Chcete-li toto pravidlo omezit jen na svůj LLM endpoint, zkombinujte jej s podmínkou na cestu:
| Pole | Operátor | Hodnota | Logika |
|---|---|---|---|
| URI Path | rovná se | /api/chat |
And |
| Raw tělo požadavku | matches regex | EMP-[0-9]{6} |
Výraz při použití editoru:
(http.request.uri.path eq "/api/chat" and http.request.body.raw matches "EMP-[0-9]{6}")
Další příklady regulárních výrazů
| Vlastní typ PII | Příklad formátu | Regex vzor |
|---|---|---|
| ID zaměstnance | EMP-482910 |
EMP-[0-9]{6} |
| Číslo zdravotního záznamu pacienta | PAT/2024/00391 |
PAT/[0-9]{4}/[0-9]{5} |
| Interní ID účtu | ACCT-XX-99999 |
ACCT-[A-Z]{2}-[0-9]{5} |
| Vlastní prefix API klíče | sk_live_abc123... |
sk_live_[a-zA-Z0-9]{20,} |
Poznámky k pravidlům s regulárními výrazy
- Požadavek na plán Cloudflare. Operátory regulárních výrazů (
matchesa~) vyžadují plán Business nebo Enterprise. - Limit velikosti těla.
http.request.body.rawpole kontroluje omezenou část těla požadavku. Přesný limit liší se podle plánu. - JSON payloady. Raw tělo požadavku obsahuje celou JSON strukturu. Váš regulární výraz by měl počítat s tím, že text promptu je vnořen uvnitř JSON řetězce.
- Výkon. Složité vzory regulárních výrazů mohou ovlivnit dobu vyhodnocování pravidla. Udržujte vzory co nejkonkrétnější.
Kombinace obou přístupů
Detekci založenou na AI a přesnou detekci můžete používat společně pro vrstvenou ochranu:
(cf.llm.prompt.pii_detected or http.request.body.raw matches "EMP-[0-9]{6}")
Toto pravidlo blokuje požadavky, kde buď AI model detekuje jakoukoli vestavěnou kategorii PII, nebo regex odpovídá vašemu vlastnímu formátu identifikátoru.