Configura la limitazione di frequenza con Google Cloud Armor
Questo documento descrive come applicare limitazione di frequenza di condivisione equa ai client Cloud Service Mesh, aiutandoti a gestire il consumo equo dei tuoi servizi e a impedire ai client dannosi o con comportamenti anomali di sovraccaricare i tuoi servizi.
La procedura di configurazione richiede la creazione di un criterio di sicurezza Cloud Armor e di un criterio endpoint. Se non hai familiarità con le policy di sicurezza di Cloud Armor, ti consigliamo di leggere la panoramica delle policy di sicurezza.
Come funziona limitazione di frequenza
Il limite di frequenza limita il numero di richieste che il tuo servizio può ricevere dai client entro un intervallo di tempo specificato per migliorare la disponibilità del servizio e condividere equamente la capacità disponibile tra i client.
La soglia, l'intervallo e l'azione della richiesta che Cloud Armor applica al
traffico in entrata che supera la soglia del limite di frequenza sono configurabili dall'utente. Per limitazione di frequenza di Cloud Service Mesh, Cloud Armor utilizza il tipo di criterio di sicurezza CLOUD_ARMOR_INTERNAL_SERVICE
e le regole dei criteri di sicurezza utilizzano l'azione fairshare
.
Ogni criterio di sicurezza di Cloud Armor contiene una o più regole. Ogni regola
è costituita da una condizione di corrispondenza e da un'azione. Quando una richiesta soddisfa la condizione di corrispondenza, Cloud Armor applica l'azione configurata alla richiesta.
Quando configuri limitazione di frequenza, crei una regola del criterio di sicurezza con
una delle azioni di limitazione di frequenza menzionate in precedenza e qualsiasi condizione di corrispondenza
adatta al tuo caso d'uso (inclusa la corrispondenza di tutte le richieste in entrata con
il flag --src-ip-ranges "*"
). Le regole all'interno di un criterio vengono valutate in ordine di priorità. La regola con la priorità numerica più bassa ha la priorità logica più elevata e viene valutata per prima. Cloud Armor esegue la limitazione della frequenza lato server, il che significa che il server applica il limite di frequenza anziché il dispositivo client.
Le azioni di limitazione della frequenza hanno campi aggiuntivi che utilizzi per perfezionare la soglia di limitazione della frequenza. I seguenti campi sono condivisi tra tutte le regole di limitazione di frequenza:
rate_limit_threshold_count
: il numero di richieste per intervallo di tempo configurato dall'utente in cui Cloud Armor deve applicare limitazione di frequenza.interval_sec
: l'intervallo di tempo, in secondi, perrate_limit_threshold_count
.exceed_action
: l'azione da eseguire sulle richieste che superano la soglia del limite di frequenza.conform_action
: l'azione da eseguire sulle richieste che non superano la soglia del limite di frequenza.
Limitazione della frequenza con Cloud Service Mesh
Questa sezione fornisce una descrizione generale dei passaggi da seguire per configurare limitazione di frequenza con Cloud Service Mesh.
Innanzitutto, crea una policy endpoint e assicurati che EndpointMatcher
selezioni le tue istanze Cloud Service Mesh per applicare limiti di frequenza al traffico in entrata. EndpointMatcher
utilizza le etichette degli endpoint per
identificare le istanze a cui si collega.
Successivamente, crea un criterio di sicurezza di Cloud Armor con il tipo
CLOUD_ARMOR_INTERNAL_SERVICE
. L'unica azione disponibile per questo tipo di norma di sicurezza è fairshare
. In questo criterio, crei una regola predefinita con l'azione
fairshare
per applicare lalimitazione di frequenzaà fairshare a tutto il traffico che non
soddisfa una regola con priorità più elevata. Puoi aggiungere nuove regole con priorità più alta per applicare un limite di frequenza diverso a diversi tipi di traffico. Ad esempio, puoi assegnare
un limite di frequenza inferiore o superiore a un intervallo di indirizzi IP specifico.
Infine, dopo aver terminato la creazione della policy di sicurezza con una o più regole di limitazione di frequenza, la colleghi alla policy dell'endpoint. Dopo aver collegato la
policy di sicurezza, Cloud Armor applicalimitazione di frequenzaa lato server a tutto
il traffico in entrata che corrisponde a una condizione di corrispondenza di una regola e che si connette
alle istanze dmesh di serviziesh selezionate da EndpointMatcher
.
Cloud Service Mesh configura un limite di frequenza globale per tutte le istanze. Ciò significa che il volume totale di traffico in tutte le istanze del server viene aggregato per determinare quando applicare il limite di frequenza. Qualsiasi client che invia richieste a un servizio di questo tipo è soggetto alla stessa soglia di applicazione e norma. Ciò significa che quando il tasso di traffico aggregato supera la soglia, alcune richieste vengono eliminate.
Per configurare la limitazione di frequenza con Cloud Service Mesh, consulta l'articolo Configurare la limitazione di frequenza di Google Cloud Armor con Envoy.
Limitazioni
Quando configuri la limitazione di frequenza con Cloud Armor, tieni presente le seguenti limitazioni:
- Le quote di Cloud Armor limitano il numero di regole personalizzate che puoi creare. Ti consigliamo di controllare la quota prima di creare più di 20 regole personalizzate.
- Ogni risorsa dei criteri degli endpoint deve fare riferimento a un criterio di sicurezza diverso. Non puoi collegare un criterio di sicurezza a un nuovo criterio endpoint se è già a cui fa riferimento un criterio endpoint esistente.
- Le norme di sicurezza con l'azione
fairshare
sono limitate alla chiave di limitazione della frequenzaALL
. - Quando implementi criteri di sicurezza con l'azione
fairshare
, Cloud Armor ignora il campopreview
durante l'applicazione delle regole. - Non puoi configurare un criterio di sicurezza di Cloud Armor se utilizzi il routing del traffico TCP.
Inoltre, le policy di sicurezza di Cloud Armor con il tipo
CLOUD_ARMOR_INTERNAL_SERVICE
sono limitate ai seguenti attributi del
Common Expression Language (CEL):
request.headers
request.method
request.path
request.scheme
request.query
Per ulteriori informazioni sugli attributi CEL, vedi Configurazione degli attributi del linguaggio delle regole personalizzate.