Il limitatore della velocità DR REST API è un meccanismo per gestire i rischi di esaurimento delle risorse API e degli attacchi brute force.
Livello | Descrizione | Configurazione | Valore predefinito |
---|---|---|---|
IP address | Considera le richieste in base all'indirizzo IP. | ipRateLimitQuota | 100 |
ipRateLimitWindow | 60 000 in ms (1 minuto) | ||
Service | Considera le richieste in base al nome del servizio DR REST API. In DR REST API sono presenti tre nomi di servizio: srm, vr e configure. "srm v1" e "srm v2" hanno lo stesso nome di servizio di "srm". | serviceRateLimitQuota | 1000 |
serviceRateLimitWindow | 60 000 in ms (1 minuto) | ||
Session | Considera le richieste in base alla sessione. | sessionRateLimitQuota | 50 |
sessionRateLimitWindow | 60000 in ms (1 minuto) | ||
n/a | Pulizia periodica delle strutture dati del limitatore della velocità delle richieste obsolete per ridurre l'impronta digitale della memoria di runtime. Il valore 0 (zero) indica che non viene eseguita alcuna pulizia. | rateLimitLogPurgeInterval | 7 200 000 in ms (2h) |
Il limitatore della velocità DR REST API è costituito da tre livelli che funzionano in catena per limitare le richieste in entrata in base ai criteri del livello. Se i criteri del livello vengono soddisfatti, viene restituita immediatamente una risposta alla richiesta che consente di saltare il resto della catena di livelli. La catena di livelli del limitatore della velocità DR REST API è costituita da indirizzo IP, servizio e sessione in tale ordine.
È possibile modificare la configurazione del limitatore della velocità DR REST API aggiungendo o aggiornando i valori delle proprietà specificate nel file dr-rest-api.properties. Il file si trova nella cartella /opt/vmware/dr-rest/lib/. Se una proprietà del limitatore della velocità non è definita esplicitamente nel file di configurazione dr-rest-api.properties di DR REST API, il limitatore della velocità utilizza il valore predefinito. Per predefinire un valore di configurazione, aggiungere la configurazione corrispondente, se manca, e impostare il valore richiesto. I valori aggiornati diventano effettivi quando inizia una nuova finestra del limite di velocità.
Esempio di file dr-rest-api.properties
... ipRateLimitQuota=100 ipRateLimitWindow=60000 serviceRateLimitQuota=1000 serviceRateLimitWindow=60000 sessionRateLimitQuota=50 sessionRateLimitWindow=60000 rateLimitLogPurgeInterval=0 ...
Risposta HTTP
- RateLimit-Limit: quota del server per le richieste del client nella finestra temporale.
- RateLimit-Remaining: quota rimanente nella finestra corrente.
- RateLimit-Reset: tempo rimanente nella finestra corrente, specificato in millisecondi.
429 Too Many Requests
e l'intestazione RateLimit-Remaining è 0 (zero). Le risposte di DR REST API contengono le intestazioni del limite di velocità dell'ultimo livello del limite di velocità che ha elaborato la richiesta del client.
Procedure consigliate per impostare la configurazione ottimale del limite di velocità
Per impostare la configurazione ottimale del limite di velocità, è necessario tenere in considerazione vari fattori.
- Iniziare con i valori predefiniti delle configurazioni del limitatore della velocità.
- ipRateLimitQuota, ipRateLimitWindow, serviceRateLimitQuota, serviceRateLimitWindow, sessionRateLimitQuota, sessionRateLimitWindow
- rateLimitLogPurgeInterval
- Ascoltare le risposte alle richieste con codice di errore
429 Too Many Requests
ed eseguire le azioni necessarie.- Attendere la finestra del limite di velocità successiva e ripetere le richieste la cui velocità è stata limitata.
- Ridurre l'intensità delle richieste sul lato client.
- Aggiornare le configurazioni del limite di velocità: aumentare la configurazione correlata RateLimitQuota e/o diminuire la configurazione correlata RateLimitWindow.
- Analizzare le intestazioni di risposta RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset ed esegue le azioni necessarie.
- Modificare l'intensità delle richieste sul lato client nella direzione necessaria.
- Aggiornare le configurazioni del limite di velocità nella direzione necessaria.