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, in modo da gestire il consumo equo dei servizi e impedire ai client dannosi o con comportamento anomalo di sovraccaricare i 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 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 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 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 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 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 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 una policy di sicurezza di Cloud Armor con il 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 lalimitazione di frequenzaà di condivisione equa 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 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 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
fairsharesono limitate alla chiave di limitazione della frequenzaALL. - Quando implementi policy di sicurezza con l'azione
fairshare, Cloud Armor ignora il campopreviewdurante l'applicazione delle regole. - Non puoi configurare una policy 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.headersrequest.methodrequest.pathrequest.schemerequest.query
Per ulteriori informazioni sugli attributi CEL, consulta Configura gli attributi del linguaggio delle regole personalizzate.