Le API di Cloudflare offrono un accesso programmatico a quasi tutte le funzionalità della piattaforma: gestione dei DNS, configurazione dei firewall, impostazioni di sicurezza, regole di caching, gestione dei worker e molto altro. Comprendere come sono strutturate e come autenticarvisi è essenziale per automatizzare la gestione delle proprietà web su larga scala.
Panoramica dell'architettura delle API
Cloudflare espone principalmente API RESTful basate su HTTPS, con endpoint organizzati per risorsa. Gli URL seguono in genere lo schema:
https://api.cloudflare.com/client/v4/risorsa/...
Le risorse principali ruotano attorno al concetto di account e zone:
- Account: rappresenta l'entità organizzativa (azienda, progetto, cliente).
- Zone: corrispondono in genere a un dominio (ad esempio esempio.com) e racchiudono impostazioni DNS, sicurezza e performance.
Molti endpoint richiedono di specificare l'identificativo dell'account o della zona, valore che si può recuperare dalla dashboard oppure tramite apposite chiamate API.
Autenticazione e sicurezza
Cloudflare supporta diversi metodi di autenticazione, ma quelli più utilizzati in automazione sono:
- API Token: raccomandato; consente di limitare i permessi a specifiche risorse e azioni.
- API Key globale: meno granulare, fornisce accesso ampio all'account e andrebbe usata con cautela.
Autenticazione tramite API Token
Una volta creato un API Token dalla dashboard Cloudflare, lo si utilizza nelle richieste HTTP tramite un header Authorization
in stile Bearer token. Esempio con curl:
curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" -H "Authorization: Bearer <API_TOKEN>" -H "Content-Type: application/json"
Questa chiamata permette di verificare la validità del token e i permessi associati.
Autenticazione tramite API Key globale
Con la Global API Key si utilizzano gli header X-Auth-Email e X-Auth-Key:
curl -X GET "https://api.cloudflare.com/client/v4/user" -H "X-Auth-Email: user@example.com" -H "X-Auth-Key: <GLOBAL_API_KEY>" -H "Content-Type: application/json"
È consigliato preferire gli API Token, più sicuri e facilmente revocabili o sostituibili.
Struttura delle richieste e delle risposte
Le API di Cloudflare accettano e restituiscono dati in formato JSON. Le richieste includono in genere:
- Il metodo HTTP corretto (GET, POST, PUT, PATCH, DELETE).
- Gli header di autenticazione.
- Talvolta parametri di query per filtrare risultati o controllare la paginazione.
- Un corpo JSON per operazioni di creazione o aggiornamento.
Le risposte seguono una struttura coerente, che include campi come:
success: booleano che indica l'esito della richiesta.errorsemessages: eventuali errori o messaggi informativi.result: l'oggetto o la lista di oggetti richiesti.
{
"success": true,
"errors": [],
"messages": [],
"result": {
"...": "..."
}
}
Gestione delle zone e dei record DNS
Elencare le zone
Per ottenere la lista delle zone associate al tuo account:
curl -X GET "https://api.cloudflare.com/client/v4/zones" -H "Authorization: Bearer <API_TOKEN>" -H "Content-Type: application/json"
La risposta includerà tra l'altro l'identificatore di ogni zona, necessario per operazioni successive.
Elencare i record DNS di una zona
Una volta nota la zone_id, si possono elencare i record DNS:
curl -X GET "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/dns_records" -H "Authorization: Bearer <API_TOKEN>" -H "Content-Type: application/json"
È possibile filtrare per tipo di record, nome o contenuto aggiungendo parametri di query, ad esempio:
curl -X GET "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/dns_records?type=A&name=www.esempio.com" -H "Authorization: Bearer <API_TOKEN>" -H "Content-Type: application/json"
Creare un record DNS
Per creare un nuovo record DNS A:
curl -X POST "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/dns_records" -H "Authorization: Bearer <API_TOKEN>" -H "Content-Type: application/json" --data '{
"type": "A",
"name": "www",
"content": "203.0.113.10",
"ttl": 120,
"proxied": true
}'
Il campo proxied controlla se il traffico passa attraverso la rete di Cloudflare (icona arancione) oppure se punta direttamente all'origin (icona grigia).
Aggiornare o eliminare un record DNS
Per aggiornare un record esistente occorre conoscerne l'ID. Una volta recuperato, si può usare un metodo PUT o PATCH:
curl -X PUT "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/dns_records/<DNS_RECORD_ID>" -H "Authorization: Bearer <API_TOKEN>" -H "Content-Type: application/json" --data '{
"type": "A",
"name": "www",
"content": "203.0.113.20",
"ttl": 300,
"proxied": false
}'
Per eliminare il record:
curl -X DELETE "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/dns_records/<DNS_RECORD_ID>" -H "Authorization: Bearer <API_TOKEN>" -H "Content-Type: application/json"
Gestione del firewall e delle regole di sicurezza
Le API consentono di configurare firewall rules, IP Access Rules, rate limiting e molte altre funzionalità di sicurezza. Questo è cruciale per integrare Cloudflare con sistemi di sicurezza esistenti o per reagire automaticamente a incidenti.
Firewall Rules
Le Firewall Rules permettono di definire condizioni complesse per consentire, bloccare o sfidare (challenge) il traffico. La definizione avviene tramite espressioni simili a quelle utilizzate nella dashboard.
{
"filter": {
"expression": "(ip.src in {192.0.2.1 198.51.100.0/24})",
"paused": false,
"description": "Blocca IP sospetti"
},
"action": "block"
}
Questa struttura JSON verrebbe inviata a un endpoint dedicato alla creazione di firewall filters e rules, tipicamente con metodo POST.
API per performance e caching
Attraverso le API si possono controllare impostazioni di caching, ottimizzazioni delle immagini, minificazione e compressione automatica. Ad esempio, è possibile svuotare selettivamente la cache di determinati asset o dell'intero sito.
Purge della cache
Per eliminare l'intera cache di una zona:
curl -X POST "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/purge_cache" -H "Authorization: Bearer <API_TOKEN>" -H "Content-Type: application/json" --data '{
"purge_everything": true
}'
Per un purge selettivo su specifici URL:
curl -X POST "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/purge_cache" -H "Authorization: Bearer <API_TOKEN>" -H "Content-Type: application/json" --data '{
"files": [
"https://www.esempio.com/css/stile.css",
"https://www.esempio.com/js/app.js"
]
}'
Cloudflare Workers e API correlate
I Workers permettono di eseguire codice JavaScript alla periferia della rete di Cloudflare. Le API consentono di gestire script, impostazioni di routing e KV storage, in modo da integrare deploy automatizzati nelle pipeline CI/CD.
Distribuire uno script Worker
Uno script Worker può essere caricato tramite una richiesta PUT su un endpoint specifico per la zona o l'account, con il codice JavaScript passato nel corpo della richiesta. In molti casi si preferisce utilizzare strumenti come Wrangler, che a loro volta sfruttano le API di Cloudflare, ma è possibile interagire direttamente con le API REST per casi d'uso avanzati.
addEventListener("fetch", event => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
return new Response("Hello from Cloudflare Worker", {
status: 200,
headers: { "Content-Type": "text/plain" }
});
}
Lo script viene poi associato a determinate route o a un dominio intero tramite ulteriori chiamate API.
Paginazione, filtri e ordinamento
Molti endpoint che restituiscono liste (zone, record DNS, log, eccetera) implementano un meccanismo di paginazione. Di solito è possibile specificare parametri come:
page: indice della pagina.per_page: numero di elementi per pagina.- Parametri di filtro (ad esempio nome, stato, tipo).
- Opzioni di ordinamento, quando supportate.
La risposta includerà metadati sul numero totale di pagine, sul numero di risultati e sul cursore corrente, consentendo di iterare programmaticamente sull'intero dataset.
Gestione degli errori e best practice
Le risposte di errore includono tipicamente un codice HTTP descrittivo e un array errors con codici interni
Cloudflare e messaggi testuali. È buona norma gestire almeno:
- Codici 4xx per errori del client (autenticazione, permessi, parametri errati).
- Codici 5xx per errori temporanei lato Cloudflare.
Alcune best practice nell'uso delle API di Cloudflare:
- Utilizzare API Token con permessi minimi necessari.
- Archiviare le credenziali in modo sicuro (ad esempio in un secret manager) ed evitare di inserirle nel codice sorgente.
- Implementare meccanismi di retry con backoff esponenziale per errori 5xx o di rete.
- Limitare la frequenza delle chiamate per rispettare eventuali rate limit.
- Monitorare le risposte e i log per individuare tempestivamente errori o comportamenti anomali.
Integrazione con linguaggi e strumenti comuni
Sebbene sia sempre possibile usare curl o librerie HTTP generiche, nella pratica si integrano le API di Cloudflare
in applicazioni e script nei linguaggi più diffusi. Ad esempio in Python:
import requests
API_TOKEN = "..." # recupera da variabile d'ambiente o secret manager
ZONE_ID = "..."
headers = {
"Authorization": f"Bearer {API_TOKEN}",
"Content-Type": "application/json",
}
url = f"https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/dns_records"
response = requests.get(url, headers=headers)
data = response.json()
if data.get("success"):
for record in data.get("result", []):
print(record["name"], record["type"], record["content"])
else:
print("Errore nella chiamata API:", data.get("errors"))
Approcci analoghi sono possibili con Node.js, Go, PHP e altri linguaggi, sfruttando librerie HTTP idiomatiche e gestendo l'autenticazione tramite header.
Conclusione
Le API di Cloudflare costituiscono uno strumento potente per automatizzare la gestione dell'infrastruttura web, migliorare sicurezza e performance e integrare le funzionalità della piattaforma nei propri processi aziendali. Partendo dalle operazioni di base su zone e record DNS, passando per firewall, caching e Workers, è possibile costruire pipeline completamente automatizzate e altamente affidabili. La chiave è comprendere bene il modello di autenticazione, la struttura delle richieste e l'interpretazione delle risposte, adottando al contempo buone pratiche di sicurezza e osservabilità.