Para personalizar uma política de controle de acesso conforme as necessidades do seu negócio, configure uma política de segurança do Service Mesh (ASM) com autorização personalizada. Nesse cenário, as solicitações são encaminhadas a um serviço de autorização personalizado especificado por você, responsável pela autenticação. Essa abordagem permite implementar lógicas complexas de autenticação, reduzir custos de desenvolvimento e manutenção e aumentar a eficiência das equipes.
Pré-requisitos
Procedimento
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha .
Na página ASMSecurityPolicy, clique em Create. Na caixa de diálogo Create ASMSecurityPolicy, clique em Custom Authorization Service e, em seguida, clique em OK.
-
Na página Create Custom Authorization Service, no assistente de Custom Authorization Service Configuration, selecione a aba Custom authorization service (HTTP or gRPC protocol) implemented based on envoy.ext_authz. Em seguida, configure os parâmetros e clique em Next.
Este exemplo utiliza as configurações abaixo. Para mais detalhes sobre os parâmetros, consulte Conectar-se a um serviço de autorização personalizado que usa HTTP. Defina os seguintes parâmetros: ASM security policy name (por exemplo,
test), Protocol (HTTP ou gRPC), Service address (por exemplo,ext-authz.default.svc.cluster.local), Service port (por exemplo,8000) e Timeout (por exemplo,10segundos). Opcionalmente, ative as opções Allow requests when authorization service is unavailable e Use custom error code when authorization service is unavailable. Ative a opção Include request headers in check (includeRequestHeadersInCheck) e adicione os cabeçalhos necessários à lista abaixo, comocookie,authorization,x-forwarded-access-token,x-forwarded-user,x-forwarded-email,x-forwarded-proto,proxy-authorization,user-agent,x-forwarded-host,from,x-forwarded-for,accepte o cabeçalho personalizadox-ext-authz. Ative a opção Override headers on allow (headersToUpstreamOnAllow) e adicione os cabeçalhos que deseja substituir, comoauthorization,cookie,path,x-auth-request-access-token,x-forwarded-access-tokenex-ext-authz-check-result. Ative também a opção Override headers on deny (headersToDownstreamOnDeny) e adicione os cabeçalhos a serem substituídos, comocontent-type,set-cookieex-ext-authz-check-result. O cabeçalhox-ext-authz-check-resulté personalizado e deve constar tanto na lista de permissão quanto na de negação. -
No assistente Workload and Match Rules, clique em Add Workload Group. Na caixa de diálogo New Workload Group, configure os parâmetros e clique em Submit.
A tabela a seguir descreve a configuração dos parâmetros neste exemplo.
Parâmetro
Descrição
Workload Group Name
Defina o nome como test-policy.
Workload List
-
Clique em Add Workload.
-
Na caixa de diálogo Add Workload, selecione Workload Scope. Defina Namespaces como default e Workload Type como Service.
-
Na área Select workloads, selecione productpage, clique em ícone
para movê-lo para a área selected e clique em OK.
Match Rule List
Defina Match Mode como The selected request must be authenticated. Selecione Custom Matching Rules para Matching Rules. Em seguida, ative a opção Path e defina o caminho como /productpage.
Após a criação da política, a mensagem "ASM security policy created successfully" aparece na etapa Complete do assistente. Clique em View YAML para visualizar o arquivo YAML do recurso criado ou em Complete para retornar à página ASMSecurityPolicy e visualizar a nova política.
-
-
Verifique se a configuração de autorização personalizada entrou em vigor.
-
Execute o comando a seguir para enviar uma solicitação com o cabeçalho
x-ext-authz: allowe acessar o serviço productpage:curl -I -H "x-ext-authz: allow" http://${IP address of the ingress gateway}/productpageSaída esperada:
HTTP/1.1 200 OK content-type: text/html; charset=utf-8 content-length: 5288 server: istio-envoy date: Tue, 17 Jan 2023 07:53:14 GMT x-envoy-upstream-service-time: 20Essa saída indica que a autorização personalizada foi acionada e a autenticação foi bem-sucedida.
-
Execute o comando a seguir para enviar uma solicitação com o cabeçalho
x-ext-authz: denye acessar o serviço productpage:curl -I -H "x-ext-authz: deny" http://${IP address of the ingress gateway}/productpageSaída esperada:
HTTP/1.1 403 Forbidden x-ext-authz-check-result: denied date: Tue, 17 Jan 2023 07:55:27 GMT server: istio-envoy x-envoy-upstream-service-time: 2 transfer-encoding: chunkedEssa saída indica que a autorização personalizada foi acionada, mas a autenticação falhou.
Os resultados acima confirmam que a configuração de autorização personalizada está em vigor.
-
Referências
Para mais informações sobre conceitos e recursos das políticas de segurança do ASM, consulte Visão geral das políticas de segurança do ASM.
Ative o recurso de auditoria de malha para registrar ou rastrear operações diárias de diferentes usuários. Também é possível configurar alertas de auditoria para operações em recursos do ASM e enviar notificações aos contatos de alerta sempre que houver alterações em recursos importantes. Para mais detalhes, consulte Usar o recurso de auditoria de operações KubeAPI no ASM e Configurar alertas de auditoria para operações em recursos do ASM.