← Cloudflare API Shield / api-shield / security
Volumetric Abuse Detection
Cloudflare Volumetric Abuse Detection generuje doporučení limitů četnosti požadavků pro jednotlivé koncové body a relace, která se automaticky přizpůsobují změnám ve vzorcích vašeho provozu.
Cloudflare vyhledává zneužívání koncových bodů na základě uživatelského provozu směřujícího k jednotlivým koncovým bodům.
Vaše API může například zaznamenávat různou úroveň provozu na /reset-password endpoint než /login endpoint. Navíc váš /login endpoint může po úspěšné marketingové kampani zaznamenat nadprůměrný provoz.
Tyto dva scénáře ukazují limity tradičního rate limitingu. Provoz se totiž liší nejen mezi jednotlivými endpointy, ale u stejného endpointu se může měnit i v čase. Volumetric Abuse Detection tyto problémy řeší pomocí učení bez dozoru (analýzy vzorců provozu bez předem daných pravidel), díky kterému vytváří samostatné referenční profily pro každý endpoint a postupem času se přizpůsobuje změnám v chování uživatelů.
Limity četnosti požadavků Volumetric Abuse Detection se generují na základě jednotlivých relací, a ne podle IP adres. Díky tomu se při nárůstu provozu k vašemu API snižuje počet falešně pozitivních výsledků, protože limity sledují jednotlivé relace, a ne sdílené IP adresy.
Limity četnosti požadavků Volumetric Abuse Detection slouží k tomu, aby zabránily zjevnému objemovému zneužívání a zároveň minimalizovaly falešně pozitivní výsledky. Pokud chcete zamezit škodlivému provozu botů úplně, podívejte se na Řešení proti botům.
Proces
Volumetric Abuse Detection analyzuje statistiky provozu jednotlivých relací vašeho API a na jejich základě doporučuje limity četnosti požadavků pro jednotlivé endpointy a relace.
Pro přístup ke svým endpointům přejděte na Security > Webová aktiva > Endpointy.
Doporučení se budou dále aktualizovat, pokud se změní vzorec vašeho provozu.
Požadavky
Volumetric Abuse Detection vygeneruje prahové hodnoty limitů četnosti požadavků až poté, co nashromáždí dostatek dat o provozu pro spolehlivá doporučení. Pokud doporučení pro objevený endpoint chybí, provoz pravděpodobně nesplnil potřebná kritéria.
Prahové hodnoty jsou navrhovány pouze pro endpointy, které za posledních sedm dní (nebo od okamžiku prvního zjištění) splňují všechny následující požadavky:
- Endpoint musí obdržet dostatek platného provozu (provozu, který splňuje API Discovery kritéria). Přerušovaný nebo nepravidelný provoz může návrhům zabránit.
- K endpointu musí za libovolné 24hodinové období v posledních sedmi dnech přistoupit alespoň 50 různých relací.
- Identifikátory relace, například autorizační token dostupný jako hlavička požadavku nebo soubor cookie, musí být nakonfigurován tak, aby Cloudflare mohl přesně rozpoznávat jednotlivé relace a provádět potřebnou analýzu frekvence pro jednotlivé relace.
Po přidání identifikátoru relace počítejte s tím, že se doporučení pro omezení frekvence požadavků zobrazí u koncových bodů v Cloudflare dashboardu až po 24 hodinách.
Výpočet doporučení pro omezování počtu požadavků
Vyberte řádek koncového bodu v Endpointy , kde zobrazíte doporučení pro omezení rychlosti. Podrobné zobrazení ukazuje celkovou doporučenou hodnotu a hodnoty podle percentilů (p50, p90, p99).
Cloudflare během dne přepočítává doporučenou hodnotu na základě požadavků za posledních 24 hodin. Pokud se profil vašeho provozu nemění, doporučení se nemusí měnit.
Cloudflare doporučuje použít celkové doporučení limitu četnosti požadavků místo hodnoty jediného percentilu. Celkové doporučení zohledňuje rozptyl napříč všemi vašimi relacemi API. Použití jediné hodnoty percentilu může kvůli vysokému počtu odlehlých hodnot způsobovat falešně pozitivní výsledky.
V Endpointy, můžete si u každého doporučení zobrazit úroveň spolehlivosti a počet jedinečných relací zaznamenaných za posledních sedm dní. Koncové body s menším počtem jedinečných relací a vysokou variabilitou chování uživatelů mají obecně nižší skóre spolehlivosti.
I rate limity s nízkou mírou spolehlivosti mohou pomoci předcházet zneužití API. Pokud je míra spolehlivosti nízká, nastavte pravidlo rate limit nejprve v režimu log a sledujte porušení kvůli falešně pozitivním výsledkům, než přepnete na block.
Vytvořit rate limity
Viz Dokumentace k pravidlům kde najdete více informací o vytvoření pravidla Advanced Rate Limiting.
API
Doporučení pro limity počtu požadavků jsou dostupná přes API pokud chcete limity četnosti postupem času dynamicky aktualizovat.
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné:Account API GatewayAccount API Gateway ReadDomain API GatewayDomain API Gateway Read
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/api_gateway/operations/$OPERATION_ID" \
--request GET \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Zvláštní případy
Limit počtu požadavků podle uživatele (JWT claim)
Požadavky můžete omezovat na základě libovolného nároku uvnitř JSON Web Tokenu (JWT), například:
- Registrované claims jako
audnebosub - Vlastní claims jako
userEmail, včetně vnořených vlastních nároků, jako jeuser.email
Omezování počtu požadavků na základě hodnot JWT claim funguje pouze u platných JSON Web Tokenů. Pokud na dané cestě neblokujete neplatné JSON Web Tokeny, Všechny deklarace JWT budou započítány a případně blokovány pokud je v Point of Presence (PoP) zjištěn vysoký provoz.
Musíte také počítat s JWT claimem, který uživatele jednoznačně identifikuje. Pokud zvolíte claim, který je stejný pro mnoho vašich uživatelů, budou se jejich rate limity počítat dohromady.
Limit počtu požadavků podle úrovně uživatele
Pokud na svém webu nebo v aplikaci nabízíte více úrovní a chcete podle nich vynucovat rate limiting, například:
- Pokud
"aud": "free-tier", omezte frekvenci na pět požadavků za minutu. - Pokud
"aud": "premium-tier", omezte frekvenci na 50 požadavků za minutu.
Můžete postupovat podle níže uvedeného příkladu pravidla pro omezení četnosti požadavků:
(http.request.method eq "GET" and
http.host eq "<YOUR_DOMAIN>" and
http.request.uri.path matches "</EXAMPLE_PATH>" and
lookup_json_string(http.request.jwt.claims["<JWT_TOKEN_CONFIGURATION_ID>"][0], "aud") eq "free-tier"Omezení
API Shield doporučení vypočítá vždy, jakmile jsou nakonfigurované identifikátory relace. Chcete-li zapnout omezení frekvence požadavků založené na relaci, předplaťte si Advanced Rate Limiting.
Dostupnost
Volumetric Abuse Detection je dostupný pouze pro zákazníky s plánem Enterprise. Pokud jste zákazníkem Enterprise a máte o tento produkt zájem, kontaktujte svůj tým pro správu účtu.