Cette page explique comment configurer des règles de limitation du débit de service pour les équilibreurs de charge d'application internes régionaux.
Avant de commencer
- Familiarisez-vous avec la présentation de la limitation du débit de service.
-
- API de sécurité réseau (
networksecurity.googleapis.com) - API Network Services (
networkservices.googleapis.com)
Pour activer les API, exécutez la commande suivante :
gcloud services enable \ networksecurity.googleapis.com \ networkservices.googleapis.com - API de sécurité réseau (
Si vous n'avez pas encore configuré d'équilibreur de charge d'application interne régional, consultez la page Configurer un équilibreur de charge d'application interne régional avec des backends de groupes d'instances de VM et créez-en un.
Créer une règle de limitation du débit de service
Pour créer une règle de limitation du débit de service, créez un fichier YAML qui définit la cible et les règles, puis importez le fichier à l'aide de la commande gcloud network-security service-rate-limit-policies. Les sections suivantes fournissent des exemples de règles de limitation du débit de service.
Appliquer la limitation du débit en fonction de groupes personnalisés
L'exemple suivant utilise une balise personnalisée de l'en-tête HTTP, x-custom-group-tag, pour identifier deux groupes : group1 et group2. Il limite les requêtes par minute (RPM) à 10 000 pour group1 et à 20 000 pour group2.
gcloud
Créez le fichier
custom-groups-policy.yamlet spécifiez les paramètres de la règle.$ 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 EOFRemplacez les éléments suivants :
PROJECT_ID: ID de votre Cloud de Confiance projet.LOCATION: emplacement de votre règle de transfert.FORWARDING_RULE_NAME: nom de votre règle de transfert.
Créez la règle de limitation du débit de service en important le fichier YAML que vous avez créé à l'étape précédente :
gcloud network-security service-rate-limit-policies import custom-groups-policy \ --source=custom-groups-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Remplacez les éléments suivants :
PROJECT_ID: ID de votre Cloud de Confiance projet.LOCATION: emplacement de votre règle de transfert.
Appliquer la limitation du débit à tous les clients
L'exemple suivant limite les requêtes par minute à 10 000 pour tous les clients.
gcloud
Créez le fichier
all-clients-policy.yamlet spécifiez les paramètres de la règle.$ 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 EOFRemplacez les éléments suivants :
PROJECT_ID: ID de votre Cloud de Confiance projet.LOCATION: emplacement de votre règle de transfert.FORWARDING_RULE_NAME: nom de votre règle de transfert.
Créez la règle de limitation du débit de service en important le fichier YAML que vous avez créé à l'étape précédente :
gcloud network-security service-rate-limit-policies import all-clients-policy \ --source=all-clients-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Remplacez les éléments suivants :
PROJECT_ID: ID de votre Cloud de Confiance projet.LOCATION: emplacement de votre règle de transfert.
Appliquer la limitation du débit en fonction de l'hôte et de la clé API
L'exemple suivant limite le débit des API destinées à l'hôte example.com à 1 000 requêtes toutes les cinq minutes pour chaque valeur unique de la clé API extraite de l'en-tête HTTP x-api-key. Une clé API spéciale abc123 a une limite plus élevée de 10 000 requêtes toutes les cinq minutes.
gcloud
Créez le fichier
host-and-api-key-policy.yamlet spécifiez les paramètres de la règle.$ 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 EOFRemplacez les éléments suivants :
PROJECT_ID: ID de votre Cloud de Confiance projet.LOCATION: emplacement de votre règle de transfert.FORWARDING_RULE_NAME: nom de votre règle de transfert.
Créez la règle de limitation du débit de service en important le fichier YAML que vous avez créé à l'étape précédente :
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
Remplacez les éléments suivants :
PROJECT_ID: ID de votre Cloud de Confiance projet.LOCATION: emplacement de votre règle de transfert.
Appliquer la limitation du débit en fonction du chemin d'URL et du nom du client
L'exemple suivant limite les API hébergées sur le chemin /public pour chaque client, identifié par son nom commun de certificat client, à 100 requêtes par minute.
gcloud
Créez le fichier
path-and-client-name-policy.yamlet spécifiez les paramètres de la règle.$ 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 EOFRemplacez les éléments suivants :
PROJECT_ID: ID de votre Cloud de Confiance projet.LOCATION: emplacement de votre règle de transfert.FORWARDING_RULE_NAME: nom de votre règle de transfert.
Créez la règle de limitation du débit de service en important le fichier YAML que vous avez créé à l'étape précédente :
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
Remplacez les éléments suivants :
PROJECT_ID: ID de votre Cloud de Confiance projet.LOCATION: emplacement de votre règle de transfert.