La limitazione della velocità protegge le API da eventuali abusi controllando il numero di richieste che un utente può effettuare entro un intervallo di tempo specifico. A tale scopo, è necessario impostare una soglia per il numero massimo di richieste consentite da un singolo utente (o indirizzo IP) in un determinato periodo di secondi, minuti o ore. La limitazione della velocità impedisce agli utenti di sovraccaricare l'API con richieste eccessive che potrebbero causare problemi di performance o la creazione di vulnerabilità nella sicurezza tramite attacchi DoS (Denial-of-Service), scraping delle API e molto altro.
Che cos'è la limitazione della velocità?
La limitazione della velocità è un meccanismo utilizzato per controllare la quantità di dati o richieste che può essere trasmessa tra due sistemi in un determinato periodo di tempo; aiuta a prevenire gli abusi, protegge le risorse di sistema e garantisce un utilizzo corretto per tutti gli utenti. Implementando la limitazione della velocità, le organizzazioni possono ridurre il rischio di sovraccarico dei server, migliorare le performance della rete e potenziare la sicurezza generale.
Una risorsa digitale, come un' API (Application Programming Interface), è per sua natura finita, quindi sarà in grado di gestire un numero così elevato di richieste al minuto o all'ora, supponendo che venga implementata su un numero fisso di infrastrutture, ad esempio un server virtuale. Per evitare il sovraccarico di tale risorsa, i suoi proprietari applicano spesso una "limitazione di velocità", una pratica che limita il numero di richieste gestite per ciascun utente in un determinato periodo di tempo. La limitazione della velocità è anche chiamata "throttling" (letteralmente, "strozzamento") perché questo processo digitale equivale all'operazione di restringere un tubo per limitare il flusso d'aria.
La limitazione della velocità ha più scopi: garantisce un accesso affidabile alle risorse digitali che soddisfano le aspettative di qualità del servizio. Con la limitazione della velocità, i proprietari dei sistemi non devono investire nell'infrastruttura di cui non hanno bisogno. La limitazione della velocità è anche uno strumento importante per proteggere le risorse digitali dall'uso dannoso o non autorizzato, nonché per comprendere meglio le esigenze del traffico in modo da stabilire come scalare l'ambiente.
Che cos'è la limitazione della velocità?
Il modo migliore per comprendere la limitazione della velocità è paragonarla ad una policy. La limitazione della velocità è un insieme di regole che controllano la velocità con cui un utente può accedere a una risorsa digitale. Ad esempio, quante volte un utente può tentare di accedere a un sito web in un minuto? Se non esiste una policy di limitazione della velocità, la risposta è: "Quante volte l'utente lo desidera". Se si imposta una limitazione della velocità, la risposta potrebbe essere: "L'utente può tentare di effettuare l'accesso fino a tre volte in un determinato minuto". Se l'utente tenta di accedere una quarta volta, verrà bloccato.
La limitazione della velocità si verifica quando una policy di limitazione della velocità viene applicata da un tipo di soluzione hardware o software. Sono necessarie sia la policy che la relativa applicazione: senza la policy, l'applicazione non ha senso e, viceversa senza l'applicazione, la policy non ha senso. La limitazione della velocità implica anche l'esistenza di uno strumento di monitoraggio che tiene traccia della velocità di utilizzo delle risorse, segnalando eventuali situazioni problematiche come un server in sovraccarico o un'attività sospetta che indica che è in corso un attacco informatico.
Perché la limitazione della velocità è importante?
La limitazione della velocità è importante perché costituisce un elemento operativo fondamentale per garantire la qualità del servizio, la cybersecuritye l'aspetto finanziario. Per quanto riguarda la qualità del servizio, la limitazione della velocità impedisce alle risorse di essere sovraccaricate da troppe richieste, una situazione che può causare rallentamenti o interruzioni del servizio. Se le policy di limitazione della velocità vengono ben progettate, tutti gli utenti idonei possono usufruire di una qualità del servizio (QoS) simile. Parallelamente, la limitazione della velocità contribuisce a garantire condizioni di equità impedendo ad un utente di monopolizzare una risorsa digitale.
Per quanto riguarda la cybersecurity, la limitazione della velocità funge da contromisura per proteggersi da una serie di minacce diverse. Un attacco DOS (Denial-of-Service), ad esempio, tenta di inondare una risorsa con un numero eccessivo di richieste tale da farla arrestare. La limitazione della velocità può impedire agli autori di attacchi DOS di raggiungere questo obiettivo. Analogamente, la limitazione della velocità può mitigare gli attacchi di forza bruta, che comportano una rapida individuazione delle password. La limitazione della velocità funziona anche contro il credential stuffing, una variante degli attacchi di forza bruta in cui un criminale prova rapidamente diverse coppie di nome utente/password rubate per ottenere l'accesso non autorizzato a una risorsa, ad esempio il sito di una banca.
La limitazione della velocità può aiutare anche un'azienda dal punto di vista finanziario. Una risorsa digitale ha un suo costo, quindi più efficiente sarà il suo utilizzo, migliore sarà il suo risultato finanziario. Le limitazioni della velocità mantengono l'utilizzo delle risorse digitali entro limiti prevedibili. Per capire perché è importante, considerate un caso in cui un'azienda deve acquistare server aggiuntivi per tenere il passo con un elevato volume di traffico causato dagli utenti con accesso illimitato. Non si tratta di un investimento utile.
Osservando questo problema da una prospettiva diversa, ogni richiesta di assistenza comporta un costo, che potrebbe essere piccolo (magari un centesimo) se si considerano le spese legate alla larghezza di banda, al data center e ai programmi software/hardware. Tuttavia, se milioni di richieste di servizio indesiderate intasano un sistema, ciò comporterà una notevole perdita in termini economici.
La limitazione della velocità può anche far parte della monetizzazione di una risorsa digitale. Ad esempio, un'azienda può consentire a un utente di effettuare 5.000 chiamate API alla settimana per 100 dollari. Per applicare questo numero massimo di chiamate API, il proprietario dell'API deve limitare la velocità.
Come funziona la limitazione della velocità?
La limitazione della velocità si basa sull'ID utente o sull'indirizzo IP (Internet Protocol) di un utente. Una soluzione di limitazione della velocità tiene traccia degli indirizzi IP associati alle richieste di servizio. Poiché l'indirizzo IP rappresenta un codice univoco per ogni connessione al servizio richiesto, consente alla soluzione di limitazione della velocità di bloccare in modo efficace un comportamento che non rientra nelle policy impostate.
Il processo effettivo di limitazione della velocità implica la registrazione del numero totale di richieste effettuate dagli utenti da un determinato indirizzo IP. La soluzione di limitazione della velocità confronta quindi l'attività della richiesta con le relative policy, rilevando facilmente gli utenti che violano le regole e impedendo loro di continuare. Nella maggior parte dei casi, la soluzione di limitazione della velocità invia un messaggio di errore all'utente.
La paginazione delle API è anche uno strumento utilizzato per controllare la velocità con cui vengono effettuate le richieste API, garantendo, quindi, che il sistema non sia sovraccarico e che i dati vengano recuperati in modo efficiente. Questa tecnica aiuta anche a proteggere dalle richieste dannose e riduce il rischio di violazioni dei dati. Inoltre, limitando il numero delle richieste, contribuisce a ridurre il carico dei server e a migliorare le performance complessive.
In che ambito viene utilizzata la limitazione della velocità?
I proprietari dei sistemi utilizzano la limitazione della velocità per una serie di motivi, la maggior parte dei quali è relativa alla QoS e alla sicurezza. Gli obiettivi sono quasi sempre quelli di mantenere i sistemi in funzione come previsto, offrire buone user experience e proteggere le risorse digitali da un uso improprio, in particolare:
- Evitare problemi di disponibilità dovuti a un uso eccessivo delle risorse. Una domanda eccessiva su una risorsa, come un'API, dovuta alla popolarità o al crimine informatico, rende la risorsa meno disponibile per gli utenti che ne hanno bisogno.
- Protezione di altre aree del patrimonio IT. La limitazione della velocità riduce il rischio di penetrazione della rete o di violazione dei dati, che può verificarsi a seguito di un attacco di forza bruta o di credential stuffing.
- Gestione di quote e contratti. Il proprietario del sistema può stabilire una quota per l'utilizzo delle risorse o richiedere un contratto che limita la quantità e la tempistica degli accessi. La limitazione della velocità consente di applicare tali accordi.
- Controllo del traffico e del flusso. La limitazione della velocità mantiene il flusso del traffico di rete entro un livello definito, evitando rallentamenti e interruzioni, e può consentire anche il controllo intelligente del flusso con il traffico di rete instradato in base a volumi prevedibili, ad esempio, unendo i flussi in un unico dispositivo.
- Controllo dei costi e delle spese CapEx. La limitazione della velocità consente ai proprietari del sistema di allocare il traffico alle risorse digitali in base a qualsiasi livello stabilito in fase di approvvigionamento, ad esempio, è possibile autorizzare l'acquisto di un server prevedendo che dovrà gestire 10.000 richieste di servizi all'ora. Se le richieste effettive di servizi sono maggiori, ciò potrebbe richiedere l'acquisto di più server, che non rientravano nel budget originale.
Tipi di limitazioni della velocità
Ci siamo concentrati sulla limitazione della velocità in base alle richieste di servizio di un utente in un determinato periodo di tempo. Tuttavia, esistono molti altri modi per limitare le richieste. Ad esempio, le regole di limitazione della velocità possono limitare il volume delle richieste in base alla frequenza e al volume totale delle richieste. Ad esempio, è possibile vietare ad un utente di tentare di accedere a un sito più di 10 volte in un minuto o più di 100 volte in un giorno. È anche possibile applicare entrambe queste regole. In caso contrario, l'utente potrebbe tentare di effettuare l'accesso 10 volte al minuto per 1440 minuti in 24 ore, il che non è ideale dal punto di vista della QoS.
È anche possibile limitare la velocità in base alla posizione. Gli utenti che risiedono in Germania potrebbero essere autorizzati ad effettuare 100 tentativi di accesso al giorno, mentre quelli che risiedono in Francia potrebbero essere autorizzati per effettuarne 200. In alternativa, questo tipo di policy di limitazione della velocità può attivare il reindirizzamento delle richieste di servizio, ad esempio l'invio di traffico da un server sovraccarico in Germania a un server in Francia.
Conclusione
La limitazione della velocità è un controllo essenziale e una contromisura utilizzata dai proprietari di sistemi che desiderano rimanere al sicuro ed evitare perdite di servizi. Questa pratica contribuisce, inoltre, a garantire i risultati finanziari desiderati per gli investimenti nelle risorse digitali perché si tratta di un concetto semplice, ossia restringere l'accesso in base alle regole sulle richieste al minuto e così via, ma l'implementazione richiede una particolare attenzione ai dettagli. Con la limitazione effettiva della velocità, i server e le API, tra gli altri elementi dell'infrastruttura, saranno disponibili solo per coloro che sono autorizzati ad utilizzarli.
Domande frequenti
La maggior parte delle best practice per la sicurezza delle API include queste strategie comuni per implementare la limitazione della velocità:
- Token bucket: questa strategia assegna gli utenti a un certo numero di token, che vengono reintegrati a una tariffa fissa. Ogni richiesta API utilizza un token e il numero di token dell'utente si reintegra lentamente per consentire di gestire il traffico intenso e i diversi tassi di richieste.
- Leaky bucket: come per i token bucket, questo metodo controlla il numero di tentativi che ogni utente può effettuare in un determinato periodo di tempo. Tuttavia, invece di accumulare token fino a un massimo stabilito, i leaky bucket "perdono" i token in eccesso per garantire un flusso costante di richieste, offrendo una limitazione più regolare della velocità e prevenendo i picchi improvvisi di traffico.
- Contatori a finestra fissa: questa strategia prevede l'impostazione di una finestra temporale fissa e di un numero massimo di richieste consentite. Se il numero delle richieste supera il limite consentito, le richieste successive verranno rifiutate finché la finestra non sarà aggiornata. Anche se questa strategia è facile da implementare, è sensibile ai modelli di traffico intenso.
Le API che limitano la velocità possono influire sulle user experience, causando ritardi o problemi di accesso, e sono necessarie operazioni di ottimizzazione per trovare il perfetto bilanciamento tra sicurezza e user experience.
L'impostazione di una limitazione della velocità troppo bassa può causare tempi di risposta più lenti o errori di rifiuto per gli utenti legittimi. Una limitazione della velocità non uniforme può causare problemi di accesso intermittenti e un funzionamento non affidabile. Ottimizzare la limitazione della velocità in base ai modelli di traffico previsti può eliminare questo problema. È una buona idea progettare applicazioni che scalano facilmente le funzionalità in base alle esigenze, mantenendo intatte le funzionalità principali.
La trasparenza e la chiarezza sono le priorità principali per comunicare agli utenti le limitazioni della velocità per la sicurezza delle API. I messaggi di errore devono utilizzare il codice di stato HTTP 429, che corrisponde ad un numero eccessivo di richieste, e indicare che è applicata una limitazione della velocità, fornendo dettagli specifici sul numero massimo di richieste consentite o sulle richieste rimanenti prima di aggiungere o aggiornare i token.
Why customers choose Akamai
Akamai is the cybersecurity and cloud computing company that powers and protects business online. Our market-leading security solutions, superior threat intelligence, and global operations team provide defense in depth to safeguard enterprise data and applications everywhere. Akamai’s full-stack cloud computing solutions deliver performance and affordability on the world’s most distributed platform. Global enterprises trust Akamai to provide the industry-leading reliability, scale, and expertise they need to grow their business with confidence.