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
Configure a extensão de autorização.
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 EOFSubstitua
PROJECT_IDpelo 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 ouext_authzmais adequado também é compatível com o pré-lançamento. Quando a opçãowireFormaté definida comoEXT_AUTHZ_GRPC, o callout usa o protocoloext_authz. Se a opção não for especificada, a callout usará o protocoloext_proc.Importe a extensão de autorização. Use o comando
gcloud service-extensions authz-extensions importcom os seguintes valores de exemplo.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=us-east1Se você quiser definir o protocolo como
ext_authz, use o comandogcloud beta service-extensions authz-extensions import.
Configure uma política de autorização com a extensão.
Defina uma política de autorização que associe a extensão
my-authz-extà regra de encaminhamentofr1. Use os valores de amostra fornecidos. A açãoCUSTOMindica 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" EOFImporte a política de autorização para o projeto. Use o comando
gcloud network-security authz-policies importcom 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
- Confira exemplos em Python e Go de servidores
ext_authzeext_procno repositório do GitHub do Service Extensions. - Configurar uma extensão de rota
- Configurar uma extensão de tráfego
- Gerenciar extensões