← Dokumentace WAF / detections / ai-security-for-apps
Detekce PII
AI Security for Apps (dříve Firewall for AI) dokáže ve vstupních promptech LLM detekovat osobní identifikační údaje (PII). K detekci PII existují dva přístupy, které pro vícevrstvou ochranu můžete použít i společně:
- Detekce založená na AI, AI Security for Apps používá model AI 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 (regulární výraz), Vytvoříte WAF custom rule s regulárním výrazem nad syrovým tělem požadavku. Tento přístup je ideální pro identifikátory specifické pro danou organizaci se známým, předvídatelným formátem.
Detekce PII založená na AI
Když je AI Security for Apps povolena a požadavek dorazí na cf-llm endpoint s tímto štítkem prohledá prompt na výskyt PII a naplní dvě pole:
- LLM PII detected (
cf.llm.prompt.pii_detected),truepokud bylo zjištěno jakékoli PII. - LLM PII categories (
cf.llm.prompt.pii_categories) : pole se seznamem konkrétních nalezených typů PII.
Detekce je založena na modelu rozpoznávání pojmenovaných entit (NER) s využitím AI. Viz cf.llm.prompt.pii_categories reference pole s úplným seznamem rozpoznaných kategorií.
Podporované kategorie PII
| Kategorie | Popis |
|---|---|
BANK_ACCOUNT |
Číslo bankovního účtu |
CREDIT_CARD |
Číslo platební karty |
DATE_TIME |
Výraz data nebo času |
DRIVER_LICENSE |
Číslo řidičského průkazu |
EMAIL_ADDRESS |
E-mailová adresa |
IP_ADDRESS |
Adresa IPv4 |
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
cf.llm.prompt.pii_detected pole vrací true když je zjištěna jakákoli kategorie PII, včetně širokých kategorií jako PERSON, DATE_TIME, a LOCATION které se často vyskytují v běžné konverzaci. Blokování založené pouze na tomto poli povede u většiny aplikací k vysoké míře falešně pozitivních výsledků.
Místo toho vytvářejte pravidla proti cf.llm.prompt.pii_categories a uveďte pouze kategorie, které jsou pro váš případ použití relevantní. Chatbot zákaznické podpory může například potřebovat blokovat čísla kreditních karet a SSN, ale klidně může ignorovat jména osob a data. Začněte s nejužší sadou kategorií, sledujte shody v Security Analytics, a rozšiřujte je jen podle potřeby.
Příklad pravidel: Detekce založená na AI
Blokování všech požadavků obsahujících PII
-
Když příchozí požadavky odpovídají:
Pole Operátor Hodnota LLM PII Detected equals True Výraz při použití editoru:
(cf.llm.prompt.pii_detected) -
Akce: Block
Blokování pouze konkrétních kategorií PII
-
Když příchozí požadavky odpovídají:
Pole Operátor Hodnota LLM PII Categories is in Credit CardVýraz při použití editoru:
(any(cf.llm.prompt.pii_categories[*] in {"CREDIT_CARD"})) -
Akce: Block
Zaznamenávat e-mailové adresy, ale blokovat čísla kreditních karet a SSN
Vytvořte dva 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 (regulární výraz)
Pokud potřebujete detekovat vlastní formáty PII specifické pro vaši organizaci, jako jsou interní ID zaměstnanců, čísla záznamů pacientů nebo vlastní identifikátory účtů, můžete vytvořit WAF vlastní pravidlo pomocí shody regulárního výrazu s nezpracovaným tělem (http.request.body.raw pole).
Tento přístup doplňuje detekci založenou na AI tím, že porovnává předdefinované vzory, včetně identifikátorů specifických pro danou organizaci.
Příklad: detekce ID zaměstnanců
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í:
-
Když příchozí požadavky odpovídají:
Pole Operátor Hodnota Nezpracované 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." }
Vymezit na konkrétní endpoint
Chcete-li toto pravidlo omezit pouze na koncový bod LLM, zkombinujte ho s podmínkou pro cestu:
| Pole | Operátor | Hodnota | Logika |
|---|---|---|---|
| URI Path | equals | /api/chat |
And |
| Nezpracované 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 | Vzor regulárního výrazu |
|---|---|---|
| ID zaměstnance | EMP-482910 |
EMP-[0-9]{6} |
| Číslo zdravotnické dokumentace 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 klíče API | sk_live_abc123... |
sk_live_[a-zA-Z0-9]{20,} |
Co zvážit u pravidel s regulárním výrazem
- 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 jen omezenou část těla požadavku. Přesný limit se liší podle plánu. - Datové části JSON. Nezpracované tělo obsahuje celou strukturu JSON. Váš regulární výraz by měl zohlednit, že text promptu je vnořený v řetězci JSON.
- Výkon. Složité regulární výrazy mohou ovlivnit dobu vyhodnocení pravidla. Vzory volte co nejkonkrétnější.
Kombinujte oba přístupy
Detekci založenou na AI a přesnou detekci můžete použít společně pro vícevrstvou ochranu:
(cf.llm.prompt.pii_detected or http.request.body.raw matches "EMP-[0-9]{6}")
Toto pravidlo blokuje požadavky, u kterých model AI zjistí libovolnou vestavěnou kategorii PII, nebo výraz regex odpovídá vašemu vlastnímu formátu identifikátoru.