Configura políticas de límite de frecuencia de servicio

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

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

  1. Crea el archivo custom-groups-policy.yaml y 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
    EOF
    

    Reemplaza 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.
  2. 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

  1. Crea el archivo all-clients-policy.yaml y 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
    EOF
    

    Reemplaza 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.
  2. 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

  1. Crea el archivo host-and-api-key-policy.yaml y 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
    EOF
    

    Reemplaza 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.
  2. 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

  1. Crea el archivo path-and-client-name-policy.yaml y 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
    
    EOF
    

    Reemplaza 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.
  2. 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.

¿Qué sigue?