O maior erro que empresas cometem ao implementar zero-trust: comprar uma ferramenta e chamar de done. Como projetar zero-trust como princípio arquitetural, não como produto.
Disley Souza
12 de maio de 2026
Zero-trust virou marketing. Toda ferramenta de segurança agora é "zero-trust ready". Isso é um problema — porque zero-trust não é uma categoria de produto. É uma decisão arquitetural que afeta como você escreve cada linha de código que toca autenticação, autorização e acesso a dados.
O princípio original de John Kindervag (2010): nunca confie, sempre verifique. Nenhuma rede é inerentemente confiável — nem a sua rede interna. Um usuário dentro do VPN não está automaticamente autorizado. Um serviço interno não confia automaticamente em outro serviço interno.
Zero-trust elimina o conceito de "perímetro". Não existe dentro e fora confiáveis. Todo acesso é tratado como potencialmente hostil até prova contrária — em cada request, não só no login.
A maioria das empresas tenta adicionar zero-trust por cima de uma arquitetura existente. Coloca um API gateway, adiciona um SIEM, assina um serviço de "zero-trust network access". Isso é maquiagem — a arquitetura continua implicitamente confiando em contextos, serviços internos e redes.
// Middleware que aplica zero-trust em cada request
// Sem exceções para "chamadas internas" ou "serviços conhecidos"
export async function withZeroTrust(
request: Request,
handler: (req: Request, identity: VerifiedIdentity) => Promise<Response>
): Promise<Response> {
// 1. Verificar token em TODA request — nunca assumir autenticado por contexto
const token = request.headers.get("Authorization")?.replace("Bearer ", "");
if (!token) return unauthorized("Missing token");
// 2. Verificar criptograficamente (não apenas decodificar JWT)
const identity = await verifyToken(token);
if (!identity) return unauthorized("Invalid token");
// 3. Verificar expiração rigorosa — sem "grace period"
if (Date.now() > identity.exp * 1000) return unauthorized("Token expired");
// 4. Verificar escopo específico para ESTE endpoint
const requiredScope = getRequiredScope(request);
if (!identity.scopes.includes(requiredScope)) return forbidden("Insufficient scope");
// 5. Logar acesso — todos, sem exceção
await auditLog({ identity, request, timestamp: Date.now() });
return handler(request, identity);
}Zero-trust add overhead operacional real. Para um sistema interno sem dados sensíveis ou compliance regulatório, pode ser overkill. A decisão de adotar zero-trust deve ser baseada no modelo de ameaça — não no buzzword do trimestre.
A pergunta certa não é "qual produto zero-trust comprar". É: em cada ponto do meu sistema onde um request chega, eu estou verificando explicitamente identidade, autorização e escopo — ou estou confiando implicitamente em algum contexto? Cada trust implícito é uma vulnerabilidade em potencial.
Próximo passo
Auditoria de segurança, arquitetura de sistemas blockchain, integração Solana — trabalhamos com equipes que não aceitam o suficiente.