Les extensions de service permettent aux équilibreurs de charge d'application d'envoyer des appels aux services de backend pour insérer un traitement personnalisé dans le chemin de traitement. Les extensions d'autorisation s'exécutent dans le chemin de traitement des requêtes lorsque l'équilibreur de charge reçoit les en-têtes de requête et après que le mappage d'URL a choisi le service de backend. Cette page explique comment configurer des extensions d'autorisation pour utiliser un moteur d'autorisation personnalisé défini dans une stratégie d'autorisation.
Pour obtenir une présentation des extensions de l'équilibreur de charge d'application, consultez Présentation des extensions Cloud Load Balancing.
Introduction
Cloud Load Balancing vous permet de configurer des règles d'autorisation qui appliquent le contrôle des accès au trafic entrant dans les équilibreurs de charge. Parfois, les décisions d'autorisation complexes ne peuvent pas être facilement exprimées à l'aide d'une règle d'autorisation.
Vous pouvez configurer des règles d'autorisation avec des extensions d'autorisation pour déléguer les décisions d'autorisation à des moteurs d'autorisation personnalisés. Dans le chemin de données, les extensions d'autorisation sont exécutées après les extensions de route, mais avant les extensions de trafic. Pour chaque demande d'autorisation, l'équilibreur de charge transmet les en-têtes de requête à l'extension. En fonction de la réponse du fournisseur, le proxy de l'équilibreur de charge transfère ou rejette la requête.
Pour en savoir plus sur les limites liées aux extensions de l'équilibreur de charge d'application, consultez la page Quotas et limites.
Avant de commencer
Créez les ressources requises, comme décrit dans Configurer un service de backend d'accroche.
Configurer une extension d'autorisation
L'exemple suivant montre comment configurer une extension d'autorisation, my-authz-ext, avec une règle d'autorisation pour déléguer les décisions d'autorisation pour un équilibreur de charge d'application interne régional dans us-east1.
gcloud
Configurez l'extension d'autorisation.
Définissez l'extension dans un fichier YAML qui l'associe au service de backend,
authz-service. Utilisez les exemples de valeurs fournis.cat >authz-extension.yaml <<EOF name: my-authz-ext authority: ext11.com loadBalancingScheme: INTERNAL_MANAGED service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/authz-service forwardHeaders: - Authorization failOpen: false timeout: "0.1s" wireFormat: EXT_AUTHZ_GRPC EOFRemplacez
PROJECT_IDpar l'ID du projet.Par défaut, tous les appels d'extensions de service utilisent le protocole Envoy External Processing ou
ext_proc. Dans le cas des callouts d'autorisation, le protocole d'autorisation externe ouext_authzle mieux adapté est également compatible avec la version Preview. Lorsque l'optionwireFormatest définie surEXT_AUTHZ_GRPC, l'appel utilise le protocoleext_authz. Si l'option n'est pas spécifiée, l'appel utilise le protocoleext_proc.Importez l'extension d'autorisation. Utilisez la commande
gcloud service-extensions authz-extensions importavec les exemples de valeurs suivants.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=us-east1Si vous souhaitez définir le protocole sur
ext_authz, utilisez plutôt la commandegcloud beta service-extensions authz-extensions import.
Configurez une règle d'autorisation avec l'extension.
Définissez une règle d'autorisation qui associe l'extension
my-authz-extà la règle de transfertfr1. Utilisez les exemples de valeurs fournis. L'actionCUSTOMindique qu'une extension est utilisée.cat >authz-policy.yaml <<EOF name: my-authz-policy target: loadBalancingScheme: INTERNAL_MANAGED resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-east1/forwardingRules/fr1" action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/us-east1/authzExtensions/my-authz-ext" EOFImportez la stratégie d'autorisation dans le projet. Utilisez la commande
gcloud network-security authz-policies importavec les exemples de valeurs suivants.gcloud network-security authz-policies import my-authz-policy \ --source=authz-policy.yaml \ --location=us-east1
Limites pour les extensions d'autorisation
Voici quelques limites des extensions d'autorisation :
- Une règle d'autorisation ne peut comporter qu'une seule extension d'autorisation.
- Une règle de transfert peut être utilisée avec plusieurs règles d'autorisation, dont une seule peut être une règle d'autorisation personnalisée.
Pour connaître les limites applicables à toutes les extensions, consultez Limites pour les extensions.
Étapes suivantes
- Consultez les exemples Python et Go des serveurs
ext_authzetext_procdans le dépôt GitHub Service Extensions. - Configurer une extension de route
- Configurer une extension de trafic
- Gérer les extensions