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
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 forwardAttributes: - request.mcp_param - connection.client_cert_leaf EOFSubstitua
PROJECT_IDpelo 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 ouext_authz, mais adequado, também é compatível com a versão prévia. Quando a opçãowireFormatestá definida comoEXT_AUTHZ_GRPC, a chamada usa o protocoloext_authz. Se a opção não for especificada, a chamada usará o protocoloext_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.
Importe a extensão de autorização. Use o
gcloud service-extensions authz-extensions importcomando com os seguintes valores de amostra.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 ogcloud beta service-extensions authz-extensions importcomando em vez disso.
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
gcloud network-security authz-policies importcomando 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
- Confira exemplos de 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