En esta página, se muestra cómo configurar políticas de límite de frecuencia del servicio para balanceadores de cargas de aplicaciones internos regionales.
Antes de comenzar
- Familiarízate con la Descripción general del límite de frecuencia del servicio.
-
- API de seguridad de red (
networksecurity.googleapis.com) - API de Network Services (
networkservices.googleapis.com)
Para habilitar las APIs, ejecuta el siguiente comando:
gcloud services enable \ networksecurity.googleapis.com \ networkservices.googleapis.com - API de seguridad de red (
Si aún no configuraste un balanceador de cargas de aplicaciones interno regional, consulta la página Configura un balanceador de cargas de aplicaciones interno regional con backends de grupos de instancias de VM y crea uno.
Crea una política de límite de frecuencia del servicio
Para crear una política de límite de frecuencia del servicio, crea un archivo YAML que defina el destino y las reglas, y, luego, importa el archivo con el comando gcloud network-security service-rate-limit-policies. En las siguientes secciones, se proporcionan ejemplos de políticas de límite de frecuencia del servicio.
Aplica el límite de frecuencia según grupos personalizados
En el siguiente ejemplo, se usa una etiqueta personalizada del encabezado HTTP, x-custom-group-tag, para identificar dos grupos: group1 y group2. Limita las solicitudes por minuto (RPM) a 10,000 para group1 y 20,000 para group2.
gcloud
Crea el archivo
custom-groups-policy.yamly especifica los parámetros de la política.$ cat >custom-groups-policy.yaml <<EOF name: projects/PROJECT_ID/locations/LOCATION/rateLimitPolicies/custom-groups-policy description: Rate limit each API key based on custom tags. httpRules: # Match on traffic on the custom tag header. - to: destination: headerSet: headers: - name: "x-custom-group-tag" value: exact: "group1" rateLimitActions: - rateLimitBucket: rl_group1_rpm_limit - to: destination: headerSet: headers: - name: "x-custom-group-tag" value: exact: "group2" rateLimitActions: - rateLimitBucket: rl_group2_rpm_limit rateLimitBuckets: - name: rl_group1_rpm_limit # Set threshold for ALL the traffic matching this bucket. keys: - keyType: ALL defaultLimit: countLimit: count: 10000 interval: 1 intervalUnit: MINUTES - name: rl_group2_rpm_limit # Set threshold for ALL the traffic matching this bucket. keys: - keyType: ALL defaultLimit: countLimit: count: 20000 interval: 1 intervalUnit: MINUTES targets: - resource: projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_NAME EOFReemplaza lo siguiente:
PROJECT_ID: el ID de tu Cloud de Confiance proyecto.LOCATION: la ubicación de tu regla de reenvío.FORWARDING_RULE_NAME: el nombre de tu regla de reenvío.
Para crear la política de límite de frecuencia del servicio, importa el archivo YAML que creaste en el paso anterior:
gcloud network-security service-rate-limit-policies import custom-groups-policy \ --source=custom-groups-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Reemplaza lo siguiente:
PROJECT_ID: el ID de tu Cloud de Confiance proyecto.LOCATION: la ubicación de tu regla de reenvío.
Aplica el límite de frecuencia a todos los clientes
En el siguiente ejemplo, se limita a 10,000 las solicitudes por minuto para todos los clientes.
gcloud
Crea el archivo
all-clients-policy.yamly especifica los parámetros de la política.$ cat >all-clients-policy.yaml <<EOF name: projects/PROJECT_ID/locations/LOCATION/rateLimitPolicies/all-clients-policy description: Service rate limiting example. httpRules: # Match on all traffic. # Service rate limiting bucket - rateLimitActions: - rateLimitBucket: rl_default_rpm_limit rateLimitBuckets: - name: "rl_default_rpm_limit" # Match on 'ALL' requests for this bucket. keys: - keyType: ALL defaultLimit: countLimit: count: 10000 interval: 1 intervalUnit: MINUTES targets: - resource: projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_NAME EOFReemplaza lo siguiente:
PROJECT_ID: el ID de tu Cloud de Confiance proyecto.LOCATION: la ubicación de tu regla de reenvío.FORWARDING_RULE_NAME: el nombre de tu regla de reenvío.
Para crear la política de límite de frecuencia del servicio, importa el archivo YAML que creaste en el paso anterior:
gcloud network-security service-rate-limit-policies import all-clients-policy \ --source=all-clients-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Reemplaza lo siguiente:
PROJECT_ID: el ID de tu Cloud de Confiance proyecto.LOCATION: la ubicación de tu regla de reenvío.
Aplica el límite de frecuencia según el host y la clave de API
En el siguiente ejemplo, se aplica el límite de frecuencia a las APIs destinadas al host example.com a 1,000 solicitudes por cada 5 minutos para cada valor único de la clave de API que se recupera del encabezado HTTP x-api-key. En cambio, una clave de API especial abc123 tiene un límite aumentado de 10,000 solicitudes por cada 5 minutos.
gcloud
Crea el archivo
host-and-api-key-policy.yamly especifica los parámetros de la política.$ cat >host-and-api-key-policy.yaml <<EOF name: projects/PROJECT_ID/locations/LOCATION/rateLimitPolicies/host-and-api-key-policy description: Rate limit each api key. httpRules: # Match on traffic to example.com - to: destination: hosts: - exact: "example.com" rateLimitActions: - rateLimitBucket: rl_default_rpm_limit rateLimitBuckets: - name: rl_default_rpm_limit # Identify API key from its header, say 'x-api-key'. keys: - header: "x-api-key" keyType: HTTP_HEADER defaultLimit: countLimit: count: 1000 interval: 5 intervalUnit: MINUTES # Override the threshold for specific API key 'abc123'. userOverrides: - overrideKey: httpHeaders: - header: "x-api-key" value: "abc123" limit: countLimit: count: 10000 interval: 5 intervalUnit: MINUTES targets: - resource: projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_NAME EOFReemplaza lo siguiente:
PROJECT_ID: el ID de tu Cloud de Confiance proyecto.LOCATION: la ubicación de tu regla de reenvío.FORWARDING_RULE_NAME: el nombre de tu regla de reenvío.
Para crear la política de límite de frecuencia del servicio, importa el archivo YAML que creaste en el paso anterior:
gcloud network-security service-rate-limit-policies import host-and-api-key-policy \ --source=host-and-api-key-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Reemplaza lo siguiente:
PROJECT_ID: el ID de tu Cloud de Confiance proyecto.LOCATION: la ubicación de tu regla de reenvío.
Aplica el límite de frecuencia según la ruta de URL y el nombre del cliente
En el siguiente ejemplo, se limita a 100 solicitudes por minuto las APIs alojadas en la ruta /public para cada cliente, identificado por su nombre común del certificado de cliente.
gcloud
Crea el archivo
path-and-client-name-policy.yamly especifica los parámetros de la política.$ cat >path-and-client-name-policy.yaml <<EOF name: projects/PROJECT_ID/locations/LOCATION/rateLimitPolicies/path-and-client-name-policy description: Simple API rate limiting example. httpRules: # Match on traffic to /public . - to: destination: paths: - exact: "/public" # Default RPM bucket rateLimitActions: - rateLimitBucket: rl_default_rpm_limit rateLimitBuckets: - name: "rl_default_rpm_limit" # Identify client by its client cert name keys: - keyType: PRINCIPAL principalType: CLIENT_CERT_COMMON_NAME defaultLimit: countLimit: count: 100 interval: 1 intervalUnit: MINUTES targets: - resource: projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_NAME EOFReemplaza lo siguiente:
PROJECT_ID: el ID de tu Cloud de Confiance proyecto.LOCATION: la ubicación de tu regla de reenvío.FORWARDING_RULE_NAME: el nombre de tu regla de reenvío.
Para crear la política de límite de frecuencia del servicio, importa el archivo YAML que creaste en el paso anterior:
gcloud network-security service-rate-limit-policies import path-and-client-name-policy \ --source=path-and-client-name-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Reemplaza lo siguiente:
PROJECT_ID: el ID de tu Cloud de Confiance proyecto.LOCATION: la ubicación de tu regla de reenvío.