Configurare un'estensione di autorizzazione

Service Extensions consente ai bilanciatori del carico delle applicazioni di inviare callout ai servizi di backend per inserire l'elaborazione personalizzata nel percorso di elaborazione. Le estensioni di autorizzazione vengono eseguite nel percorso di elaborazione delle richieste quando il bilanciatore del carico riceve le intestazioni delle richieste e dopo che la mappa URL sceglie il servizio di backend. Questa pagina descrive come configurare le estensioni di autorizzazione per utilizzare un motore di autorizzazione personalizzato definito in un'policy di autorizzazione.

Per una panoramica delle estensioni del bilanciatore del carico delle applicazioni, consulta la panoramica delle estensioni Cloud Load Balancing.

Introduzione

Cloud Load Balancing ti consente di configurare policy di autorizzazione che applicano controllo dell'accessoo al traffico che entra nei bilanciatori del carico. A volte, le decisioni di autorizzazione complesse non possono essere espresse facilmente utilizzando un criterio di autorizzazione.

Puoi configurare le policy di autorizzazione con le estensioni di autorizzazione per delegare le decisioni di autorizzazione a motori di autorizzazione personalizzati. Nel percorso dei dati, le estensioni di autorizzazione vengono eseguite dopo le estensioni di percorso, ma prima delle estensioni di traffico. Per ogni richiesta di autorizzazione, il bilanciatore del carico inoltra le intestazioni della richiesta all'estensione. A seconda della risposta del provider, il proxy del bilanciatore del carico inoltra o rifiuta la richiesta.

Per informazioni sui limiti relativi alle estensioni del bilanciatore del carico delle applicazioni, consulta la pagina Quote e limiti.

Prima di iniziare

Crea le risorse richieste come descritto in Configura un servizio di backend callout.

Configurare un'estensione di autorizzazione

L'esempio seguente mostra come configurare un'estensione di autorizzazione, my-authz-ext, con una policy di autorizzazione per delegare le decisioni di autorizzazione per un bilanciatore del carico delle applicazioni interno regionale in us-east1.

gcloud

  1. Configura l'estensione di autorizzazione.

    1. Definisci l'estensione in un file YAML che la associa al servizio di backend authz-service. Utilizza i valori di esempio forniti.

      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
      

      Sostituisci PROJECT_ID con l'ID progetto.

      Per impostazione predefinita, tutti i callout delle estensioni di servizio utilizzano il protocollo Envoy External Processing o ext_proc. Nel caso dei callout di autorizzazione, il protocollo di autorizzazione esterna o ext_authz più adatto è supportato anche in anteprima. Quando l'opzione wireFormat è impostata su EXT_AUTHZ_GRPC, il callout utilizza il protocollo ext_authz. Se l'opzione non è specificata, il callout utilizza il protocollo ext_proc.

    2. Importa l'estensione di autorizzazione. Utilizza il comando gcloud service-extensions authz-extensions import con i seguenti valori di esempio.

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

      Se vuoi impostare il protocollo su ext_authz, utilizza il comando gcloud beta service-extensions authz-extensions import.

  2. Configura una policy di autorizzazione con l'estensione.

    1. Definisci una policy di autorizzazione che associ l'estensione my-authz-ext alla regola di forwarding fr1. Utilizza i valori di esempio forniti. L'azione CUSTOM indica che viene utilizzata un'estensione.

      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. Importa la policy di autorizzazione nel progetto. Utilizza il comando gcloud network-security authz-policies import con i seguenti valori di esempio.

      gcloud network-security authz-policies import my-authz-policy \
          --source=authz-policy.yaml \
          --location=us-east1
      

Limitazioni per le estensioni di autorizzazione

Di seguito sono riportate alcune limitazioni delle estensioni dell'autorizzazione:

  • Una policy di autorizzazione può avere una sola estensione di autorizzazione.
  • Una regola di forwarding può essere utilizzata con diverse norme di autorizzazione, di cui solo una può essere una norma di autorizzazione personalizzata.

Per le limitazioni applicabili a tutte le estensioni, consulta Limitazioni per le estensioni.

Passaggi successivi