Phase 17 - Lesson 25
Segurança — Segredos, Rotação de Chaves de API, Logs de Auditoria, Barreiras de Proteção
Elimine a dispersão de segredos (secret sprawl) por meio de cofres centralizados (HashiCorp Vault, AWS Secrets Manager, Azure Key Vault). Nunca armazene credenciais em arquivos de configuração, arquivos env em VCS ou planilhas. Use funções do IAM (IAM roles) em vez de chaves estáticas; use OIDC para CI/CD. O padrão de gateway de IA (AI-gateway) é a solução para 2026: aplicativos → gateway → provedor do modelo, com o gateway buscando credenciais no cofre em tempo de execução. Rotacione no cofre e todos os aplicativos as receberão em minutos — sem novos deploys, sem mensagens de "quem tem a chave nova" no Slack. Política de rotação de ≤90 dias; faça a varredura com TruffleHog / GitGuardian / Gitleaks a cada commit. Zero-trust: MFA, SSO, RBAC/ABAC, tokens de curta duração e postura do dispositivo. A remoção de PII (PII scrubbing) usa reconhecimento de entidade para mascarar PHI/PII antes do envio; a tokenização consistente (abordagem Mesh) mapeia valores sensíveis para marcadores estáveis (placeholders) para que o LLM preserve a semântica do código/relacionamento. Egresso de rede: serviços de LLM em uma sub-rede dedicada de VPC/VNet permitindo apenas
api.openai.com,api.anthropic.cometc.; bloqueie todo o restante do tráfego de saída. O principal incidente de 2026: ataque à cadeia de suprimentos da Vercel por meio de credenciais de CI/CD comprometidas que exfiltraram variáveis de ambiente em milhares de implantações de clientes.
Tipo: Learn Linguagens: Python (stdlib, removedor de PII de brinquedo + escritor de logs de auditoria) Pré-requisitos: Phase 17 · 19 (AI Gateways), Phase 17 · 13 (Observability) Tempo: ~60 minutos
Objetivos de Aprendizagem
- Enumerar os quatro antipadrões de gerenciamento de segredos (arquivos de configuração em VCS, variáveis de ambiente codificadas permanentemente (hardcoded env), planilhas, chaves estáticas) e nomear seus substitutos.
- Explicar o padrão de gateway de IA que busca chaves no cofre (AI-gateway-pulls-from-vault) como o padrão de produção para 2026.
- Implementar um removedor de PII com tokenização consistente (mesmo valor → mesmo placeholder) para que a semântica seja mantida.
- Nomear o incidente da cadeia de suprimentos da Vercel em 2026 e o que ele ensinou sobre a higiene de credenciais em CI/CD.
O Problema
Um estagiário faz o commit de um arquivo .env com chaves de API. Ele o apaga rapidamente. As chaves já estão no histórico do git — a varredura do GitGuardian as captura, e seu processo de rotação consiste em "mandar mensagem para a equipe no Slack, atualizar 40 arquivos de configuração e implantar novamente todos os serviços". 8 horas depois, metade dos seus serviços estão ativos e metade estão aguardando janelas de implantação.
Separadamente, os prompts de usuários incluem "Meu SSN é 123-45-6789". O prompt vai para a OpenAI. Você tem um BAA (Business Associate Agreement), mas sua política interna exige mascarar PII antes do envio. Você não mascarou.
Separadamente, o pod de LLM do seu cluster EKS consegue acessar qualquer host da internet. Alguém exfiltra dados por meio de consulta DNS para um domínio controlado pelo invasor. Nada impediu isso.
A segurança para serviços de LLM precisa abordar todos os três vetores: credenciais protegidas por cofre (vault), remoção de PII (PII scrubbing), filtragem de saída de rede (network egress filtering) e logs de auditoria.
O Conceito
Cofre centralizado + busca por função do IAM
Cofre: HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager. Uma única fonte da verdade.
Função do IAM (IAM role): o aplicativo/gateway se autentica por meio de sua identidade do IAM, não por uma chave estática. O cofre retorna o segredo para o tempo de vida do token.
O padrão de gateway de IA: o gateway busca OPENAI_API_KEY no cofre no momento da requisição. Ao rotacionar no cofre, a próxima requisição recebe a nova chave. Sem novos deploys.
Política de rotação ≤ 90 dias
Todas as chaves de API, tokens de root de cofre e credenciais de CI/CD. Rotação automatizada onde for possível. Rotação manual registrada e rastreada.
Varredura de segredos
- TruffleHog — regex + entropia em commits.
- GitGuardian — comercial, alta precisão.
- Gitleaks — código aberto (OSS), roda no CI.
Execute em cada commit. Bloqueie o PR se um novo segredo for detectado.
Postura de Zero-trust
- MFA obrigatório em todas as contas.
- SSO via SAML/OIDC.
- RBAC (baseado em funções) ou ABAC (baseado em atributos) para acesso granular.
- Tokens de curta duração (horas, não dias).
- Postura do dispositivo — apenas dispositivos corporativos com criptografia de disco.
Remoção de PII / PHI
Antes que o prompt saia da sua infraestrutura:
- Reconhecimento de entidade (spaCy NER, Presidio, comercial).
- Mascare as entidades correspondentes:
"Meu SSN é 123-45-6789"→"Meu SSN é [SSN_TOKEN_A3F]". - Tokenização consistente (abordagem Mesh): o mesmo valor é mapeado para o mesmo marcador (placeholder) para que o LLM preserve as relações.
- Mapeamento reverso opcional para a resposta do LLM.
Filtros regex estáticos capturam padrões básicos; o NER captura mais. Use ambos.
Barreiras de proteção (guardrails) de entrada e saída
Entrada: bloqueie jailbreaks conhecidos e tópicos proibidos; aplique limite de taxa por usuário.
Saída: varredura regex para segredos vazados (padrões de chave de API, padrões de e-mail em contextos de recusa) e classificador para violações de política.
Lista de permissões de saída de rede (egress whitelist)
Serviços de LLM em uma sub-rede dedicada:
- Lista de permissões (whitelist):
api.openai.com,api.anthropic.com, endpoints do banco de dados vetorial, endpoints do cofre. - Todo o resto: descarte.
- DNS por meio de resolvedor exclusivo de lista de permissões (evita exfiltração por túnel DNS).
Log de auditoria
Log imutável de cada chamada de LLM com:
- Carimbo de data/hora (timestamp).
- Usuário / inquilino (tenant).
- Hash do prompt (não o prompt original, por questões de privacidade).
- Modelo + versão.
- Contagem de tokens.
- Custo.
- Hash da resposta.
- Quaisquer ativações de barreiras de proteção.
Retenha de acordo com os requisitos regulatórios (1 ano para SOC 2, 6 anos para HIPAA).
O incidente da Vercel em 2026
Ataque à cadeia de suprimentos: credenciais de CI/CD comprometidas exfiltraram variáveis de ambiente em milhares de implantações de clientes. Lição: credenciais de CI/CD são equivalentes ao ambiente de produção. Armazene-as no cofre. Defina escopos limitados. Rotacione-as agressivamente.
Números que você deve lembrar
- Política de rotação: ≤ 90 dias.
- Varredura a cada commit: TruffleHog / GitGuardian / Gitleaks.
- Vercel 2026: credenciais de CI/CD comprometidas → vazamento de variáveis de ambiente de milhares de clientes.
- Retenção de log de auditoria: SOC 2 = 1 ano, HIPAA = 6 anos.
Use
code/main.py implementa um removedor de PII de brinquedo com tokenização consistente e um log de auditoria do tipo append-only.
Entregue
Esta lição produz outputs/skill-llm-security-plan.md. Diante do escopo regulatório e do estado atual, planeja a migração para o cofre, o removedor de PII, o egresso, e o log de auditoria.
Exercícios
- Execute
code/main.py. Envie dois prompts referenciando o mesmo SSN. Confirme se ambos recebem o mesmo placeholder. - Projete a política de egresso de rede para uma implantação de vLLM no EKS chamando OpenAI + Anthropic + Weaviate.
- Você descobre uma chave no histórico do git (com 2 anos de idade). Qual é a resposta correta — rotacionar a chave, limpar o histórico ou ambos? Justifique.
- Seu log de auditoria cresce 10 GB/dia. Projete as camadas de retenção (quente 30 dias, morna 12 meses, fria 6 anos).
- Argumente se a tokenização reversa (substituir os valores reais de volta na resposta do LLM) vale a complexidade em comparação com manter os placeholders visíveis.
Termos-Chave
| Termo | O que as pessoas dizem | O que realmente significa |
|---|---|---|
| Cofre (Vault) | "armazenamento de segredos" | Serviço centralizado de gerenciamento de credenciais |
| Função do IAM | "autenticação baseada em identidade" | Função assumida pelo aplicativo; retorna credenciais de curta duração |
| OIDC para CI/CD | "tokens emitidos pela nuvem" | Sem chaves estáticas no CI — identidade via OIDC |
| TruffleHog / GitGuardian / Gitleaks | "varredores de segredos" | Detecção de segredos no momento do commit |
| RBAC / ABAC | "controle de acesso" | Baseado em funções versus baseado em atributos |
| Remoção de PII | "mascaramento de dados" | Remoção ou tokenização de entidades sensíveis |
| Tokenização consistente | "placeholders estáveis" | Mesmo valor → mesmo token todas as vezes |
| Abordagem Mesh | "tokenização Mesh" | Padrão de tokenização que preserva a semântica |
| Lista de egresso | "lista de permissão de saída" | Apenas domínios permitidos são acessíveis |
| Log de auditoria | "histórico imutável" | Registro do tipo append-only para conformidade |