Configurar uma extensão de autorização

Com as extensões de serviço, os balanceadores de carga de aplicativo podem enviar chamadas para serviços de back-end e inserir processamento personalizado no caminho de processamento. As extensões de autorização são executadas no caminho de processamento de solicitações quando o balanceador de carga recebe cabeçalhos de solicitação e depois que o mapa de URL escolhe o serviço de back-end. Nesta página, descrevemos como configurar extensões de autorização para usar um mecanismo de autorização personalizado definido em uma política de autorização.

Para uma visão geral das extensões do balanceador de carga de aplicativo, consulte Visão geral das extensões do Cloud Load Balancing.

Introdução

Com o Cloud Load Balancing, é possível configurar políticas de autorização que aplicam o controle de acesso ao tráfego que entra nos balanceadores de carga. Às vezes, decisões complexas de autorização não podem ser expressas facilmente usando uma política de autorização.

É possível configurar políticas de autorização com extensões de autorização para delegar decisões a mecanismos personalizados. No caminho de dados, as extensões de autorização são executadas depois das extensões de rota, mas antes das extensões de tráfego. Para cada solicitação de autorização, o balanceador de carga encaminha os cabeçalhos de solicitação para a extensão. Dependendo da resposta do provedor, o proxy do balanceador de carga encaminha ou rejeita a solicitação.

Para informações sobre os limites relacionados às extensões do balanceador de carga de aplicativo, consulte a página Cotas e limites.

Antes de começar

Crie os recursos necessários, conforme descrito em Configurar um serviço de back-end de callout.

Configurar uma extensão de autorização

O exemplo a seguir mostra como configurar uma extensão de autorização, my-authz-ext, com uma política de autorização para delegar decisões de autorização para um balanceador de carga de aplicativo interno regional em us-east1.

gcloud

  1. Configure a extensão de autorização.

    1. Defina a extensão em um arquivo YAML que a associa ao serviço de back-end, authz-service. Use os valores de amostra fornecidos.

      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
      

      Substitua PROJECT_ID pelo ID do projeto.

      Por padrão, todas as chamadas de extensão de serviço usam o protocolo Envoy External Processing ou ext_proc. No caso de callouts de autorização, o protocolo de autorização externa ou ext_authz mais adequado também é compatível com o pré-lançamento. Quando a opção wireFormat é definida como EXT_AUTHZ_GRPC, o callout usa o protocolo ext_authz. Se a opção não for especificada, a callout usará o protocolo ext_proc.

    2. Importe a extensão de autorização. Use o comando gcloud service-extensions authz-extensions import com os seguintes valores de exemplo.

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

      Se você quiser definir o protocolo como ext_authz, use o comando gcloud beta service-extensions authz-extensions import.

  2. Configure uma política de autorização com a extensão.

    1. Defina uma política de autorização que associe a extensão my-authz-ext à regra de encaminhamento fr1. Use os valores de amostra fornecidos. A ação CUSTOM indica que uma extensão está sendo usada.

      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. Importe a política de autorização para o projeto. Use o comando gcloud network-security authz-policies import com os seguintes valores de exemplo.

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

Limitações para extensões de autorização

Confira algumas limitações das extensões de autorização:

  • Uma política de autorização pode ter apenas uma extensão de autorização.
  • Uma regra de encaminhamento pode ser usada com várias políticas de autorização, mas apenas uma delas pode ser personalizada.

Para limitações aplicáveis a todas as extensões, consulte Limitações das extensões.

A seguir