← Cloudflare API Shield / api-shield / security / schema-validation
Konfigurace API
Pomocí API můžete schémata OpenAPI nahrávat, aktivovat, zobrazovat v seznamu a mazat. Nahrané schéma poskytuje pro své operace Schema Profile.
Konfigurace nahraného schématu
- Nahrajte schéma.
- Přidejte operace schématu do inventáře Web Assets.
- Aktivací schématu zpřístupníte vyhodnocení nahraného profilu.
- Odešlete reprezentativní provoz přes nakonfigurované operace.
- Analyzujte
cf.schema_validation.uploaded.violatedv Analýza profilu. - Nakonfigurujte mitigaci pomocí WAF Custom Rules.
Uplatnění změn nastavení může trvat několik minut.
Konfigurace
Nahrání a aktivace schématu
Nahrajte schéma s POST. Tento příklad používá example_schema.yaml z aktuálního adresáře.
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné:Account API GatewayDomain API Gateway
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/schema_validation/schemas" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"kind": "openapi_v3",
"name": "example_schema",
"source": "<SOURCE>",
"validation_enabled": true
}'{
"result": {
"schema": {
"schema_id": "af632e95-c986-4738-a67d-2ac09995017a",
"name": "example_schema",
"kind": "openapi_v3",
"source": "<SOURCE>",
"created_at": "2023-04-03T15:10:08.902309Z"
}
},
"success": true,
"errors": [],
"messages": []
}Ve výchozím nastavení je vyhodnocování nahraného schématu neaktivní. Nastavte validation_enabled=true , aby bylo vyhodnocování dostupné během nahrávání.
Použijte PATCH , aby se po kontrole schématu aktivovalo vyhodnocování.
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné:Account API GatewayDomain API Gateway
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/api_gateway/user_schemas/$SCHEMA_ID" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"validation_enabled": true
}'{
"result": {
"schema_id": "0bf58160-5da3-48ac-80a9-069f9642c1a0",
"name": "api_schema.json",
"kind": "openapi_v3",
"validation_enabled": true,
"created_at": "0001-01-01T00:00:00Z"
},
"success": true,
"errors": [],
"messages": []
}Aktivace zpřístupní vyhodnocení nahraného profilu pro nakonfigurované operace. Zmírnění tím nekonfigurujete.
Přidat operace schématu
Schémata obsahují hostitele, cesty a metody, které definují operace. Operace představuje koncový bod pomocí metody HTTP, vzoru hostname a vzoru cesty.
Schema Validation vyhodnocuje pouze požadavky u operací přidaných do Web Assets. Operace schématu a jejich konfiguraci získáte pomocí GET.
curl --request GET "https://api.cloudflare.com/client/v4/zones/{zone_id}/api_gateway/user_schemas/{schema_id}/operations?feature=schema_info&operation_status=new&page=1&per_page=5000" \
--header "Authorization: Bearer <API_TOKEN>" \
--header 'Content-Type: application/json'{
"result": [
{
"method": "GET",
"host": "example.com",
"endpoint": "/pets"
}
],
"success": true,
"errors": [],
"messages": [],
"result_info": {
"page": 1,
"per_page": 30,
"count": 1,
"total_count": 1
}
}Chcete-li získat informace o konfiguraci existujících operací, Cloudflare doporučuje předat ?feature=schema_info .
Přidejte operace schématu do Web Assets pomocí POST.
curl "https://api.cloudflare.com/client/v4/zones/{zone_id}/api_gateway/operations" \
--header "Authorization: Bearer <API_TOKEN>" \
--header 'Content-Type: application/json' \
--data '[
{
"method": "GET",
"host": "example.com",
"endpoint": "/pets",
}
]'{
"result": [
{
"operation_id": "6c734fcd-455d-4040-9eaa-dbb3830526ae",
"method": "GET",
"host": "example.com",
"endpoint": "/pets",
"last_updated": "2023-04-04T16:07:37.575971Z"
}
],
"success": true,
"errors": [],
"messages": []
}Můžete přidat operace schématu, které ve Web Assets neexistují. Toto volání API podporuje až 20 operací a vyžaduje jq. U schémat s více než 20 novými operacemi spusťte příkaz znovu, abyste přidali další dávku.
response="$(curl --silent --fail-with-body "https://api.cloudflare.com/client/v4/zones/{zone_id}/api_gateway/user_schemas/{schema_id}/operations?feature=schema_info&page=1&per_page=20&operation_status=new" --header "Authorization: Bearer <API_TOKEN>")" || exit 1
operations="$(printf "%s" "$response" | jq --exit-status ".result")" || exit 1
if [ "$(printf "%s" "$operations" | jq "length")" -eq 0 ]; then
printf "No new operations found.\n"
else
curl --silent --fail-with-body "https://api.cloudflare.com/client/v4/zones/{zone_id}/api_gateway/operations" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data "$operations" || exit 1
fiSeznam všech schémat
Seznam nahraných schémat v zóně pomocí GET.
validation_enabled=true je volitelný parametr.
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/schema_validation/schemas" \
--request GET \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{
"result": [
{
"schema_id": "af632e95-c986-4738-a67d-2ac09995017a",
"name": "example_schema",
"kind": "openapi_v3",
"source": "<SOURCE>",
"created_at": "2023-04-03T15:10:08.902309Z"
}
]
"success": true,
"errors":
[],
"messages":
[]
}Odstranění schématu
Schéma můžete smazat pomocí DELETE.
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné:Account API GatewayDomain API Gateway
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/schema_validation/schemas/$SCHEMA_ID" \
--request DELETE \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{
"result": null,
"success": true,
"errors": [],
"messages": []
}