Local é um local de execução, não uma propriedade de segurança
O Ollama documenta que prompts executados localmente não são enviados ao serviço, que recursos de cloud podem ser desativados e que o servidor usa 127.0.0.1 por padrão. São controles úteis, mas o workflow inclui editor, plugins, shell, repositório, vector store, downloader, package manager, telemetria, ferramentas, backups e sistema operacional.
Comece com um diagrama de dados e classificação explícita: código, segredos, dados de clientes, evidência de incidentes, documentos, prompts, embeddings, outputs, traces e patches. Para cada fluxo, identifique processo, identidade, armazenamento, retenção, destino de rede e ações possíveis.
Localidade de dadosPrompts, chunks, outputs, embeddings, logs e caches permanecem dentro da fronteira aprovada.
Confiança nos artefatosModelos, containers, bibliotecas, extensões e adapters têm origem verificada e digest fixado.
Menor privilégioO assistente vê apenas repositórios aprovados e recebe direitos estreitos de leitura, escrita, execução e rede.
Comportamento auditávelÉ possível rastrear contexto recuperado, ferramenta executada, alteração produzida e aprovação.
Coloque um gateway de política antes de cada modelo
Aplicações não devem chamar Ollama, llama.cpp ou vLLM diretamente. Um gateway local autentica o cliente, classifica a requisição, aplica política de projeto, remove segredos óbvios, escolhe um modelo aprovado, limita contexto e output, registra metadados mínimos e bloqueia ferramentas e destinos proibidos.
A mesma interface pode encaminhar trabalho de baixa sensibilidade para um provedor cloud aprovado. A decisão precisa ser explícita e baseada em sensibilidade, projeto, residência, modelo permitido, tipo de tarefa, tamanho do contexto e autorização. Não dependa da memória do desenvolvedor sobre qual janela de chat é segura.
Fronteira local versus cloudFronteira local confidencialCaminho padrão para contexto proprietário ou regulado.- Identidade e dispositivo gerenciado
- Repositórios aprovados e secret scanner
- RAG local com ACL
- Runtime e modelo fixados
- Ferramentas em sandbox e patch revisado
- Storage criptografado e evidência local
Gateway de políticaClassificar, minimizar, rotearAutenticação, DLP, contexto, allowlist de modelos, permissões, budgets, auditoria e egress deny-by-default.
Fronteira externa aprovadaCaminho opcional para tarefas sanitizadas e permitidas.- Contrato enterprise e região aprovada
- Sem código, segredos, dados ou traces brutos
- Apenas o contexto mínimo
- Política de identidade, retenção e logs
- Aprovação por tarefa e correlation ID
- Resposta tratada como input não confiável
Pesos de modelo são inputs executáveis da supply chain
Inferência local ainda baixa artefatos de terceiros e executa parsers, tokenizers, templates, bibliotecas nativas, drivers e às vezes código customizado. O Hugging Face documenta o risco de execução arbitrária do pickle. Prefira safetensors ou formatos restritos como GGUF, rejeite remote code não revisado, escaneie artefatos e isole conversões.
Espelhe modelos aprovados em um registry interno. Fixe revisão, hashes, digest do container, runtime, tokenizer, template, quantização, licença e model card. Registre proveniência e vulnerabilidades. SLSA, Sigstore e NIST SSDF oferecem padrões reutilizáveis para essa cadeia.
RAG precisa aplicar as permissões antes do retrieval
Um vector database privado ainda pode vazar dados entre projetos. A ingestão deve excluir .env, chaves, credenciais, dumps, binários, dependências, dados pessoais e diretórios fora do repositório permitido. Aplique ACL antes de embedding e novamente antes de retornar chunks. Um filtro de metadados depois da busca não deve ser a única barreira entre tenants.
Separe índices quando o isolamento exigir, criptografe storage, versione o corpus, propague deleções e exponha path, commit, linhas e decisão de acesso de cada chunk. O modelo deve receber o mínimo necessário para a tarefa, não o repositório inteiro.
Execução de ferramentas é uma fronteira mais forte que inferência
Um modelo local com shell arbitrário, home directory, SSH, cloud CLI ou APIs internas pode ter alcance maior que um chat cloud. O OWASP destaca prompt injection e excessive agency. Trate output do modelo como input não confiável e coloque cada ferramenta atrás de um adapter tipado e governado.
Use worktrees ou containers descartáveis, identidade non-root, mounts read-only, limites de recurso, allowlist de comandos, rede negada, restrição de paths, timeout e aprovação antes de escrita, commit, instalação, alteração em banco ou comunicação externa. Mostre o diff e o comando exatos.
| Superfície | Exposição típica | Controle necessário | Evidência |
|---|
| API de inferência | Servidor na LAN, identidade fraca, origins amplas e uso ilimitado. | Loopback ou rede privada, gateway autenticado, firewall, TLS, allowlist e rate limit. | Caller, decisão, modelo, classe, tempo e bloqueios. |
| Artefato de modelo | Serialização maliciosa, remote code, tag substituída ou licença incompatível. | Allowlist, formato seguro, digest, scan, assinatura, proveniência e revisão de licença. | Revisão, hash, assinatura, SBOM, scanner e aprovador. |
| Código e RAG | Segredos indexados, código removido, retrieval cruzado e contexto excessivo. | Scan prévio, ACL antes da busca, índices separados, deleção e minimização. | Versão do corpus, fontes, ACL, exclusões e retenção. |
| Integração do editor | Telemetria, fallback cloud oculto e acesso amplo ao workspace. | Build aprovado, política de configuração, egress, workspace restrito e updates governados. | Versão, settings, destinos, permissões e update. |
| Ferramentas do agente | Prompt injection aciona shell, Git, ticket, banco ou cloud. | Sandbox, adapters tipados, menor privilégio, dry run, aprovação e limites. | Argumentos, comando, diff, aprovador, resultado e rollback. |
| Logs e memória | Prompts, código, segredos ou dados retidos indefinidamente. | Logs mínimos, redação, criptografia, retenção curta e deleção. | Política, acessos, deleção e versão do redactor. |
Segredos não podem depender de uma instrução no prompt
“Não revele segredos” não é controle. Mantenha credenciais fora dos paths indexados e do ambiente visível ao modelo. Use identidades curtas e escopadas, secret brokers, scanners antes do commit e da ingestão e análise de output. Rotacione qualquer segredo que entre em prompt, trace, embedding ou artefato.
Criptografia de disco protege o equipamento desligado, não um editor comprometido. Uso enterprise também exige gestão de endpoint, patching, screen lock, antimalware, separação de usuários, backup controlado e revogação remota.
Meça qualidade antes de declarar o modelo local suficiente
Privacidade falha indiretamente quando um modelo fraco gera código inseguro ou força a equipe a procurar um serviço não aprovado. Avalie nos repositórios e tarefas reais: correção do patch, testes, segredos, autorização, dependências, APIs inventadas, tool use, latência, memória e energia.
Quantização, contexto, hardware, template e retrieval alteram comportamento. Versione tudo e use o mesmo pipeline de avaliação de qualquer componente de produção. Encaminhe ao tier local apenas tarefas que atendam ao piso de qualidade.
O que eu construiria
Eu construiria um gateway de IA para workstations gerenciadas e clusters privados. Ele classificaria contexto, aplicaria política por repositório, selecionaria modelo fixado, faria retrieval com ACL, abriria worktree isolado, exporia ferramentas estreitas, escanearia o diff e exigiria aprovação para ações relevantes.
Um control plane central distribuiria manifestos de modelos, policies, extensões aprovadas, evals, revogações e schema de auditoria sem coletar código. A equipe veria quais dados ficaram locais, quais tarefas sanitizadas saíram, quais artefatos rodaram e quais ações foram aprovadas.
O princípio de design
Inferência local reduz a fronteira de dados e remove dependência do provedor. A segurança vem do controle do workflow inteiro: identidade, artefatos, rede, retrieval, ferramentas, storage, logs, qualidade e autoridade humana. “Roda na minha máquina” é condição inicial, não conclusão de segurança.