Configura la limitazione di frequenza con Google Cloud Armor

Questo documento descrive come applicare la limitazione di frequenza fairshare ai client Cloud Service Mesh, in modo da gestire il consumo equo dei tuoi servizi e impedire che client dannosi o con un comportamento anomalo sovraccarichino i tuoi servizi.

La procedura di configurazione richiede la creazione di una policy di sicurezza Cloud Armor e di una policy 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 la limitazione di frequenza

La limitazione 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 tuo 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 di limite di frequenza sono configurabili dall'utente. Per la limitazione di frequenza di Cloud Service Mesh, Cloud Armor utilizza il tipo di policy di sicurezza CLOUD_ARMOR_INTERNAL_SERVICE e le regole della policy di sicurezza utilizzano l'azione fairshare.

Ogni policy 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 la limitazione di frequenza, crei una regola di policy 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 una policy 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 di frequenza lato server, il che significa che il server applica il limite di frequenza anziché il dispositivo client.

Le azioni di limitazione di frequenza hanno campi aggiuntivi che utilizzi per perfezionare la soglia di limitazione di 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 oltre il quale 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 di limite di frequenza.

Limitazione di frequenza con Cloud Service Mesh

Questa sezione fornisce una descrizione generale dei passaggi da seguire per configurare la limitazione di frequenza con Cloud Service Mesh.

Innanzitutto, crea una policy endpoint e assicurati che EndpointMatcher selezioni le istanze Cloud Service Mesh per applicare i limiti di frequenza al traffico in entrata. EndpointMatcher utilizza le etichette degli endpoint per identificare le istanze a cui si collega.

Successivamente, crei una policy di sicurezza di Cloud Armor di tipo CLOUD_ARMOR_INTERNAL_SERVICE. L'unica azione disponibile per questo tipo di policy di sicurezza è fairshare. In questo criterio, crei una regola predefinita con l'azione fairshare per applicare la limitazione 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 creato la 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 applica limitazione di frequenza lato server a tutto il traffico in entrata che corrisponde a una condizione di corrispondenza di una regola e che si connette alle istanze del mesh di servizi 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 la velocità del traffico aggregato supera la soglia, alcune richieste vengono eliminate.

Per configurare la limitazione di frequenza con Cloud Service Mesh, consulta Configura la limitazione di frequenza di Google Cloud Armor con Envoy.

Limitazioni

Quando configuri la limitazione di frequenza con Cloud Armor, tieni presenti 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 criteri di sicurezza diversi. Non puoi collegare una policy di sicurezza a una nuova policy endpoint se è già a cui fa riferimento una policy endpoint esistente.
  • Le policy di sicurezza con l'azione fairshare sono limitate alla chiave di limitazione di frequenza ALL.
  • Quando implementi policy di sicurezza con l'azione fairshare, Cloud Armor ignora il campo preview durante l'applicazione delle regole.
  • Non puoi configurare una policy di sicurezza 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 saperne di più sugli attributi CEL, consulta Configura gli attributi del linguaggio delle regole personalizzate.