Configurar uma extensão de autorização

As extensões de serviço permitem que os balanceadores de carga de aplicativo enviem chamadas para serviços de back-end para inserir o 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. Esta página descreve 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

O Cloud Load Balancing permite 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 de autorização complexas 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 de autorização a mecanismos de autorização personalizados. No caminho de dados, as extensões de autorização são executadas após as 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 chamada.

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
          forwardAttributes:
          - request.mcp_param
          - connection.client_cert_leaf
      EOF
      

      Substitua PROJECT_ID pelo ID do projeto.

      Por padrão, todas as Service Extensions usam o protocolo de processamento externo do Envoy ou ext_proc. No caso de chamadas de autorização, o protocolo de autorização externa ou ext_authz, mais adequado, também é compatível com a versão prévia. Quando a opção wireFormat está definida como EXT_AUTHZ_GRPC, a chamada usa o protocolo ext_authz. Se a opção não for especificada, a chamada usará o protocolo ext_proc.

      Para mais informações sobre os campos no arquivo YAML, consulte ExtensionChain na documentação da API. Para informações sobre atributos compatíveis, consulte Atributos compatíveis.

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

      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 gcloud beta service-extensions authz-extensions import comando em vez disso.

  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 gcloud network-security authz-policies import comando com os seguintes valores de amostra.

      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, das quais apenas uma pode ser uma política de autorização personalizada.

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

A seguir