Como autenticar clientes gRPC externos com o Amazon VPC Lattice
Aprofundamento CEVIU
Aprofundamento
O problema é de ponte entre dois modelos de identidade. Clientes externos chegam com JWT, e o Amazon VPC Lattice só confia em assinaturas AWS SigV4, que ele resolve para um principal do IAM e avalia contra auth policies. Dar credenciais AWS a cliente externo quebraria a separação entre identidade externa e interna. Por isso a AWS propõe uma camada de ingress em três peças: um ALB com a ação jwt-validation, uma camada de proxy no ECS com Fargate e auth policies do Lattice por serviço.
O ALB valida assinatura (RS256, com JWKS público), exp, iss e claims extras. Se falhar, devolve 401 antes de gastar computação no backend. O proxy decodifica o payload sem revalidar, converte client_id, scope e sub em headers (x-client-id, x-client-scope, x-client-sub), remove o Bearer e assina com as credenciais da task role. Esses headers entram no SignedHeaders, então não podem ser adulterados. Como o Lattice vê a task role e não o cliente final, as policies controlam qual proxy acessa qual serviço. Há duas formas de assinar: SDK nativo (só RPCs unários, você cuida do framing gRPC) ou filtro aws_request_signing do Envoy (suporta streaming, com target group do Lattice em ProtocolVersion GRPC). No Envoy, o filtro Lua precisa rodar antes do de assinatura, senão os headers de identidade ficam fora da assinatura. O exemplo é para uso fora de produção e leva de 20 a 30 minutos para subir.
Por que isso importa
Para quem opera plataforma, o ponto crítico é que o proxy é a fronteira de confiança e não revalida token. Na leitura editorial, o security group do proxy aceitando só o ALB deixa de ser detalhe e vira controle central. Em produção, padronizar uma única abordagem de assinatura reduz custo operacional, e o Envoy tende a fazer sentido se streaming estiver no roadmap. Fique de olho também nos custos: ALB, endpoints PrivateLink, Fargate e Lattice cobram enquanto rodam.
Perguntas frequentes
Por que não dar credenciais AWS direto aos clientes gRPC externos?
Isso quebraria a separação entre identidade externa e interna. O Lattice autentica com SigV4 e resolve o chamador para um principal do IAM. A arquitetura mantém o JWT na borda e usa a task role do proxy como identidade interna.
O que o ALB valida no JWT?
Com a ação jwt-validation, ele confere a assinatura RS256 usando o JWKS público, além de exp e iss obrigatórios. Também valida claims configurados na regra, como aud, e nbf e iat se existirem. Falhando, responde 401, que o cliente gRPC enxerga como UNAUTHENTICATED.
SDK ou Envoy para assinar com SigV4?
O SDK dá controle total, mas exige tratar credenciais, requisição canônica e framing gRPC, e só atende RPCs unários. O Envoy usa o filtro aws_request_signing, suporta streaming e concentra retries e observabilidade. Em produção, a AWS recomenda padronizar uma só abordagem.
Dá para usar outro provedor de identidade além do Cognito?
Sim, qualquer provedor compatível com OIDC que assine tokens com RS256 e publique um JWKS acessível publicamente. Se usar outro algoritmo ou JWKS privado, é preciso ajustar o provedor ou mover a validação do JWT para o proxy.
Fontes
- aws.amazon.comfonte original
- Categoria
- CEVIU DevOps
- Publicado
- 11 de novembro de 2026
- Editoria
- CEVIU DevOps

