Configurer une extension d'autorisation

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

  1. Configurez l'extension d'autorisation.

    1. 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
      EOF
      

      Remplacez PROJECT_ID par 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 ou ext_authz le mieux adapté est également compatible avec la version Preview. Lorsque l'option wireFormat est définie sur EXT_AUTHZ_GRPC, l'appel utilise le protocole ext_authz. Si l'option n'est pas spécifiée, l'appel utilise le protocole ext_proc.

    2. Importez l'extension d'autorisation. Utilisez la commande gcloud service-extensions authz-extensions import avec les exemples de valeurs suivants.

      gcloud service-extensions authz-extensions import my-authz-ext \
          --source=authz-extension.yaml \
          --location=us-east1
      

      Si vous souhaitez définir le protocole sur ext_authz, utilisez plutôt la commande gcloud beta service-extensions authz-extensions import.

  2. Configurez une règle d'autorisation avec l'extension.

    1. Définissez une règle d'autorisation qui associe l'extension my-authz-ext à la règle de transfert fr1. Utilisez les exemples de valeurs fournis. L'action CUSTOM indique 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"
      EOF
      
    2. Importez la stratégie d'autorisation dans le projet. Utilisez la commande gcloud network-security authz-policies import avec 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