Configurar políticas de limitação de taxa de serviço

Esta página mostra como configurar políticas de limitação de taxa de serviço para balanceadores de carga de aplicativo internos regionais.

Antes de começar

Criar uma política de limitação de taxa de serviço

Para criar uma política de limitação de taxa de serviço, crie um arquivo YAML que defina o destino e as regras e importe o arquivo usando o comando gcloud network-security service-rate-limit-policies. As seções a seguir mostram exemplos de políticas de limitação de taxa de serviço.

Aplicar a limitação de taxa com base em grupos personalizados

O exemplo a seguir usa uma tag personalizada do cabeçalho HTTP, x-custom-group-tag, para identificar dois grupos: group1 e group2. Ele limita as solicitações por minuto (RPM) a 10.000 para group1 e 20.000 para group2.

gcloud

  1. Crie o arquivo custom-groups-policy.yaml e especifique os parâmetros da 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
    

    Substitua:

    • PROJECT_ID: o ID do Cloud de Confiance projeto.
    • LOCATION: o local da regra de encaminhamento.
    • FORWARDING_RULE_NAME: o nome da regra de encaminhamento.
  2. Crie a política de limitação de taxa de serviço importando o arquivo YAML que você criou na etapa anterior:

    gcloud network-security service-rate-limit-policies import custom-groups-policy \
     --source=custom-groups-policy.yaml \
     --location=LOCATION \
     --project=PROJECT_ID
    

    Substitua:

    • PROJECT_ID: o ID do Cloud de Confiance projeto.
    • LOCATION: o local da regra de encaminhamento.

Aplicar a limitação de taxa a todos os clientes

O exemplo a seguir limita as solicitações por minuto a 10.000 para todos os clientes.

gcloud

  1. Crie o arquivo all-clients-policy.yaml e especifique os parâmetros da 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
    

    Substitua:

    • PROJECT_ID: o ID do Cloud de Confiance projeto.
    • LOCATION: o local da regra de encaminhamento.
    • FORWARDING_RULE_NAME: o nome da regra de encaminhamento.
  2. Crie a política de limitação de taxa de serviço importando o arquivo YAML que você criou na etapa anterior:

    gcloud network-security service-rate-limit-policies import all-clients-policy \
     --source=all-clients-policy.yaml \
     --location=LOCATION \
     --project=PROJECT_ID
    

    Substitua:

    • PROJECT_ID: o ID do Cloud de Confiance projeto.
    • LOCATION: o local da regra de encaminhamento.

Aplicar a limitação de taxa com base no host e na chave de API

O exemplo a seguir limita as APIs destinadas ao host example.com a 1.000 solicitações por 5 minutos para cada valor exclusivo da chave de API buscada no cabeçalho HTTP x-api-key. Uma chave de API especial abc123 tem um limite maior de 10.000 solicitações por 5 minutos.

gcloud

  1. Crie o arquivo host-and-api-key-policy.yaml e especifique os parâmetros da 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
    

    Substitua:

    • PROJECT_ID: o ID do Cloud de Confiance projeto.
    • LOCATION: o local da regra de encaminhamento.
    • FORWARDING_RULE_NAME: o nome da regra de encaminhamento.
  2. Crie a política de limitação de taxa de serviço importando o arquivo YAML que você criou na etapa 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
    

    Substitua:

    • PROJECT_ID: o ID do Cloud de Confiance projeto.
    • LOCATION: o local da regra de encaminhamento.

Aplicar a limitação de taxa com base no caminho do URL e no nome do cliente

O exemplo a seguir limita as APIs hospedadas no caminho /public para cada cliente, identificado pelo nome comum do certificado do cliente, a 100 solicitações por minuto.

gcloud

  1. Crie o arquivo path-and-client-name-policy.yaml e especifique os parâmetros da 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
    

    Substitua:

    • PROJECT_ID: o ID do Cloud de Confiance projeto.
    • LOCATION: o local da regra de encaminhamento.
    • FORWARDING_RULE_NAME: o nome da regra de encaminhamento.
  2. Crie a política de limitação de taxa de serviço importando o arquivo YAML que você criou na etapa 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
    

    Substitua:

    • PROJECT_ID: o ID do Cloud de Confiance projeto.
    • LOCATION: o local da regra de encaminhamento.

A seguir