Richtlinien für die Ratenbegrenzung für Dienste einrichten

Auf dieser Seite erfahren Sie, wie Sie Richtlinien zur Ratenbegrenzung für regionale interne Application Load Balancer einrichten.

Hinweis

Richtlinie zur Ratenbegrenzung für Dienste erstellen

Erstellen Sie eine YAML-Datei, in der das Ziel und die Regeln definiert sind, um eine Richtlinie zur Ratenbegrenzung für Dienste zu erstellen. Importieren Sie die Datei dann mit dem Befehl gcloud network-security service-rate-limit-policies. In den folgenden Abschnitten finden Sie Beispiele für Richtlinien zur Ratenbegrenzung für Dienste.

Ratenbegrenzung basierend auf benutzerdefinierten Gruppen anwenden

Im folgenden Beispiel wird ein benutzerdefiniertes Tag aus dem HTTP-Header x-custom-group-tag verwendet, um zwei Gruppen zu identifizieren: group1 und group2. Die Anfragen pro Minute (RPM) werden auf 10.000 für group1 und 20.000 für group2 begrenzt.

gcloud

  1. Erstellen Sie die Datei custom-groups-policy.yaml und geben Sie die Richtlinienparameter an.

    $ 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
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Cloud de Confiance Projekts in.
    • LOCATION: der Standort Ihrer Weiterleitungsregel.
    • FORWARDING_RULE_NAME: der Name Ihrer Weiterleitungsregel.
  2. Erstellen Sie die Richtlinie zur Ratenbegrenzung für Dienste, indem Sie die YAML-Datei importieren, die Sie im vorherigen Schritt erstellt haben:

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

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Cloud de Confiance Projekts in.
    • LOCATION: der Standort Ihrer Weiterleitungsregel.

Ratenbegrenzung auf alle Clients anwenden

Im folgenden Beispiel werden die Anfragen pro Minute für alle Clients auf 10.000 begrenzt.

gcloud

  1. Erstellen Sie die Datei all-clients-policy.yaml und geben Sie die Richtlinienparameter an.

    $ 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
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Cloud de Confiance Projekts in.
    • LOCATION: der Standort Ihrer Weiterleitungsregel.
    • FORWARDING_RULE_NAME: der Name Ihrer Weiterleitungsregel.
  2. Erstellen Sie die Richtlinie zur Ratenbegrenzung für Dienste, indem Sie die YAML-Datei importieren, die Sie im vorherigen Schritt erstellt haben:

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

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Cloud de Confiance Projekts in.
    • LOCATION: der Standort Ihrer Weiterleitungsregel.

Ratenbegrenzung basierend auf Host und API-Schlüssel anwenden

Im folgenden Beispiel wird die Rate der APIs, die für den Host example.com bestimmt sind, auf 1.000 Anfragen pro 5 Minuten für jeden eindeutigen Wert des API-Schlüssels begrenzt, der aus dem HTTP-Header x-api-key abgerufen wird. Für einen speziellen API-Schlüssel abc123 gilt stattdessen ein höheres Limit von 10.000 Anfragen pro 5 Minuten.

gcloud

  1. Erstellen Sie die Datei host-and-api-key-policy.yaml und geben Sie die Richtlinienparameter an.

    $ 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
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Cloud de Confiance Projekts in.
    • LOCATION: der Standort Ihrer Weiterleitungsregel.
    • FORWARDING_RULE_NAME: der Name Ihrer Weiterleitungsregel.
  2. Erstellen Sie die Richtlinie zur Ratenbegrenzung für Dienste, indem Sie die YAML-Datei importieren, die Sie im vorherigen Schritt erstellt haben:

    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
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Cloud de Confiance Projekts in.
    • LOCATION: der Standort Ihrer Weiterleitungsregel.

Ratenbegrenzung basierend auf URL-Pfad und Clientname anwenden

Im folgenden Beispiel wird die Rate der APIs, die für jeden Client unter dem Pfad /public gehostet werden und durch den allgemeinen Namen des Clientzertifikats identifiziert werden, auf 100 Anfragen pro Minute begrenzt.

gcloud

  1. Erstellen Sie die Datei path-and-client-name-policy.yaml und geben Sie die Richtlinienparameter an.

    $ 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
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Cloud de Confiance Projekts in.
    • LOCATION: der Standort Ihrer Weiterleitungsregel.
    • FORWARDING_RULE_NAME: der Name Ihrer Weiterleitungsregel.
  2. Erstellen Sie die Richtlinie zur Ratenbegrenzung für Dienste, indem Sie die YAML-Datei importieren, die Sie im vorherigen Schritt erstellt haben:

    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
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Cloud de Confiance Projekts in.
    • LOCATION: der Standort Ihrer Weiterleitungsregel.

Nächste Schritte