← Cloudflare Firewall Rules / firewall / api
Pořadí volání
Příklady volání API na tomto webu ukazují doporučené pořadí volání obou API (a to Cloudflare Filters API a Firewall Rules API).
Obrázek níže znázorňuje tento postup, který platí pro vytváření a úpravu pravidel. Pro operace mazání platí opačné pořadí.
Cloudflare doporučuje tento postup, protože usnadňuje opětovné použití filtrů a umožňuje pracovat s oběma rozhraními API nezávisle na sobě. Díky samostatné povaze Cloudflare Filters lze stejný filtr sdílet napříč více pravidly brány firewall i v dalších budoucích produktech a funkcích Cloudflare.
Příklad filtru, který odpovídá veškerému provozu pro vaše API (tedy http.request.uri.path matches "^/api/.*$") může zakázat ukládání do mezipaměti, zakázat CAPTCHA pro lidské uživatele, nakonfigurovat vlastní chyby JSON a objevit se v pravidle firewallu. Při doporučeném postupu uvedeném výše byste kroky 3-6 opakovali pro každou funkci Cloudflare, kterou chcete nakonfigurovat vůči stejnému filtru vytvořenému v krocích 1-2.
Avšak v případě POST operace zjednodušené pořadí uvedený níže vám umožňuje vytvořit filtr i pravidlo v rámci jednoho volání. V takovém případě na sebe filtr a pravidlo pouze vzájemně odkazují.
V tomto postupu jediné POST požadavek na /firewall/rules endpoint přijme objekt filtru v JSON a vytvoří filtr ve Filters API (rovněž pomocí POST request). V případě úspěchu se pravidlo firewallu vytvoří.
Níže je uveden příklad volání a odpovědi pomocí této metody:
curl "https://api.cloudflare.com/client/v4/zones/{zone_id}/firewall/rules" \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Content-Type: application/json" \
--data '[
{
"filter": {
"expression": "http.request.uri.path contains \"/api/\" and ip.src eq 93.184.216.34"
},
"action": "block"
}
]'{
"result": [
{
"id": "<RULE_ID>",
"paused": false,
"action": "block",
"priority": null,
"filter": {
"id": "<FILTER_ID>",
"expression": "http.request.uri.path contains \"/api/\" and ip.src eq 93.184.216.34",
"paused": false
}
}
],
"success": true,
"errors": [],
"messages": []
}Tento přístup má však některé nevýhody:
- Klient pravidel brány firewall musí implementovat zpracování chyb a výjimek pro každé možné selhání, ke kterému může dojít jak v API pravidel brány firewall, tak v API filtrů.
- Aby nedošlo k neúmyslné úpravě nebo odstranění filtrů používaných jinými funkcemi Cloudflare,
PUTneboDELETEoperace nejsou povoleny.
Ve výchozím nastavení platí, že pokud je filtr nebo pravidlo neplatné, nevytvoří se ani jedno z nich.
Existuje však jedna výjimka. Pokud se blížíte k překročení kvóty pravidel, Cloudflare může vytvořit filtr, ale pravidlo firewallu nikoli. Je to proto, že podle sekvenčního diagramu se pravidlo vytváří až po filtru.
Jakmile vyřešíte překročení kvóty nebo požadavek na funkci, která pro vaši zónu není dostupná, vraťte se k doporučenému postupu vytvoření pravidla odkazujícího na filtr.
Cloudflare tedy důrazně doporučuje postup se dvěma voláními API. Zjednodušený postup pro vytváření pravidel a filtrů používejte jen v naléhavých situacích, a to pouze přes curl požadavky.