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, per rate_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 frequenza ALL.
  • Quando implementi criteri di sicurezza con l'azione fairshare, Cloud Armor ignora il campo preview 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.