Para as equipas de TI
A mesma proteção, chamada pelos seus programas — uma só imagem sem estado para operar.
Antes de um fluxo de trabalho enviar um documento a uma IA, a um tradutor ou a um fornecedor, pode pedir ao DoNotLeak que encontre e substitua os dados pessoais que contém — através de uma API que exige uma identidade, servida pelo motor da página.
Mais um componente para alojar, proteger, atualizar e monitorizar? Eis o que pede: uma imagem assinada, sem base de dados nem volume a salvaguardar, configurada pelo seu ambiente, chamada por máquinas identificadas. E, a pedido, o seu código-fonte para as suas equipas.
Apenas chamadores identificados · Nada é guardado · Imagens assinadas, amd64 e arm64

Experimentar a API
Envie um pedido, leia a resposta.
O motor real, aberto aqui em demonstração, sem chave: a resposta que lê é a que os seus programas vão receber.
- 1 chamada a cada 15 s por endereço IP
- textos até 4 KB
- nada é guardado
- uma mesma rede partilha o ritmo
Os tetos da demonstração
Por endereço — uma rede IPv6 /64 conta como um só: 100 chamadas por dia, 300 por semana, 600 por mês, 2000 por ano. Para toda a demonstração: 600 chamadas por minuto e um único texto analisado de cada vez; acima disso, responde 503 e o resto do serviço não é afetado. O seu endereço só é mantido em memória, enquanto as suas chamadas são contadas; os registos guardam o verbo, o estado, os tamanhos e a duração — nunca o endereço, o texto nem a resposta.
RateLimit-Policy · RateLimit · Retry-After
- POSTscan
- POSTprotectEm breve
- POSTrestoreEm breve
- GETcapabilitiesEm breve
- POSTextractcom uma chave
- POSTrendercom uma chave
Pedido
POST/api/demo/scan
Encontra os dados pessoais — onde estão (em bytes UTF-8), o seu tipo, a sua gravidade — e devolve o texto protegido.
81 / 4096 bytes
Ver o JSON enviado
{
"text": "Damien Morel a validé le virement vers l'IBAN FR76 3000 6000 0112 3456 7890 189.",
"scope": [
"FR"
]
}Pronto — 1 chamada disponível
Resposta
A resposta aparecerá aqui.
Os seus programas chamam /api/v1/scan com a sua identidade — um certificado de cliente ou um token: é a secção seguinte.
A API
O que faz hoje: encontrar e depois substituir.
Uma só chamada: JSON à entrada; as deteções e o texto protegido à saída. Responde o próprio motor da página.
Encontrar
Cada dado pessoal do texto, com o seu tipo, a sua posição e uma pontuação de confiança. Os formatos seguem os países que indicar.
findings · counts · scope
Substituir
A mesma resposta traz o texto protegido: cada valor passa a ser um marcador tipado e numerado. Os valores que indicar como mantidos ficam como estão.
anonymized_text · replacements · kept
A chamada
curl -sS --cacert ca.pem --cert client.pem --key client.key \
-H 'Content-Type: application/json' \
-X POST --data '{"text":"Contact: jean.dupont@example.org"}' \
https://donotleak.example.org/api/v1/scanCom um token em vez de um certificado
-H "Authorization: Bearer $TOKEN"A resposta — gravada a partir do motor, quebras de linha acrescentadas
{"version":1,
"findings":[{"id":0,"kind":"Pii","span":{"start":9,"end":32},
"primary":{"label":"EMAIL","severity":"Medium","confidence":85},
"alternatives":[],"entity_id":0,"kept":false,"applied":0}],
"counts":{"total":1,"low":0,"medium":1,"high":0,"critical":0},
"anonymized_text":"Contact: [[EMAIL-1]]",
"replacements":[{"span":{"start":9,"end":32},"placeholder":"[[EMAIL-1]]"}],
"entities":[{"id":0,"label":"EMAIL","value":"jean.dupont@example.org",
"placeholder":"[[EMAIL-1]]"}],
"skipped_overlaps":0}As recusas e a tabela de entidades
As recusas nunca citam o conteúdo: 400 vazio ou não JSON, 413 acima de 1 MiB, 422 conteúdo suspeito, 401 sem identidade, 403 não autorizado, 429 orçamento excedido.
A tabela de entidades devolve cada valor original ao chamador que o enviou — é ela que torna possível restaurar. Só o texto protegido segue para a IA.
O que ainda não faz
- Restaurar: repor os originais na resposta da IA Em breve
- Os documentos Word através da API Em breve
- O contrato v1 publicado: uma descrição OpenAPI, erros uniformes, quotas por chamador Em breve
Onde se encaixa nos seus fluxos de trabalho
Um controlo antes da chamada externa.
Um fluxo — um sistema de gestão documental, um CRM, um lote de ficheiros — chama o DoNotLeak mesmo antes de chamar uma IA ou um parceiro. Só o texto protegido segue caminho.
Escolhe onde fica o controlo e o que se segue: enviar de imediato, ou deixar uma pessoa rever as deteções e voltar a enviar o texto mantendo os valores de que a tarefa precisa.

Identidade das máquinas
Nunca anónimo: cada chamada nomeia o seu chamador.
A API não tem nenhuma porta aberta. O servidor recusa-se a arrancar enquanto não souber identificar um chamador, e cada chamada é avaliada segundo a sua política.
Um certificado de cliente
TLS mútuo, terminado pelo próprio servidor: o certificado tem de remontar à autoridade de certificação que reconhece, e o seu ID SPIFFE — senão o seu nome DNS, nunca o common name — passa a ser o chamador.
TLS_CLIENT_CA · TLS_CLIENT_IDENTITY=san
Um token do seu fornecedor de identidade
O emissor OpenID Connect que designar — o seu diretório, o seu SSO: a assinatura, o emissor, a audiência e a expiração de cada token são verificados com as chaves que ele publica, e as suas funções acompanham-no.
OIDC_ISSUER_URL · OIDC_CLIENT_ID · comprovado na CI com o Keycloak
- Recusado por omissão: um chamador sem função no seu ficheiro de política é recusado (403), e analisar é um direito à parte.
- Nenhuma chave de API estática que possa vazar: um chamador prova-se com um certificado ou um token assinado.
Alojamento e soberania
Alojado pela Contee, ou dentro do seu próprio sistema de informação.
A mesma imagem headless nos dois casos.
Pela Contee, na UE
A Contee opera o servidor e basta-lhe chamá-lo. A página pública já funciona assim, na OVH SAS, um fornecedor de alojamento francês (ver o aviso legal).
A API alojada, com o seu próprio contrato de serviço Em breve
Dentro do seu sistema de informação
A imagem corre nos seus servidores, atrás da sua PKI e do seu fornecedor de identidade: os textos nunca saem do seu perímetro. A pedido, com o seu código-fonte: a oferta nas suas instalações, mais abaixo.

A oferta nas suas instalações
O código-fonte nas suas mãos, e as suas equipas para o levar mais longe.
Para uma organização que quer o DoNotLeak dentro do seu próprio sistema de informação, sem depender da Contee para o manter vivo.
O código-fonte entregue
Para uso interno da sua organização: as suas equipas leem-no, compilam-no e implementam-no dentro do seu perímetro.
As suas equipas formadas
Para o manter, o melhorar e o expandir: as competências constroem-se na sua casa, não na nossa.
A menor dependência possível
O código e o saber-fazer ficam em casa; o servidor só chega ao que configurar, nunca a um serviço da Contee.
De uma só vez, sem subscrição SaaS
Disponível desde já, a pedido, para o seu perímetro.
A imagem headless
Só o núcleo de análise — assinado, para duas arquiteturas.
Sem página, sem cookie, sem código de navegador: a API e o motor, mais nada.
O motor da página
A página e a API chamam a mesma função de análise: o que uma pessoa vê na página é o que um programa obtém.
um núcleo · duas portas
Pequena e fechada por omissão
Uma base distroless — sem shell, sem gestor de pacotes — e um utilizador não root. Recusa-se a arrancar sem uma fonte de identidade, ou com uma configuração TLS a meio.
porta 3000 · TLS e mTLS na aplicação, ou atrás do seu proxy
Construída e assinada como a imagem web
O mesmo pipeline constrói-a e analisa-a, e depois assina-a por digest com a chave própria do DoNotLeak — a imagem, a sua lista de materiais e a sua proveniência de compilação.
amd64 + arm64 · cosign · SBOM SPDX · proveniência SLSA · Trivy, Grype, Dockle, Dive
Operações
O que a imagem pede às suas operações.
Um contentor entre os outros.
Sem estado
Sem base de dados, sem volume a salvaguardar: cada pedido é processado em memória e depois esquecido. Nada a restaurar.
sem base de dados · sem volume de dados
Configurada pelo seu ambiente
Endereço de escuta, certificados, autoridade de cliente, emissor OIDC, ficheiro de política, orçamentos: variáveis, e ficheiros montados só de leitura. Uma configuração a meio recusa-se a arrancar.
LEPTOS_SITE_ADDR · TLS_CERT · TLS_CLIENT_CA · CASBIN_POLICY_FILE · SCAN_*
Monitorizada pelas suas ferramentas
Os rastreios seguem por OpenTelemetry para o seu coletor, ou então para a saída padrão; os registos nunca contêm um texto analisado.
OTEL_EXPORTER_OTLP_ENDPOINT
Atualizada por digest
Uma versão é uma imagem assinada, designada pelo seu digest: verificar a assinatura, mudar o digest, reiniciar. Um certificado que muda: novos ficheiros e depois um reinício.
cosign verify · amd64 + arm64
Onde quer que corra
Três coisas que não mudam.
Nada é guardado
Cada texto é analisado na memória do pedido que o transporta, no servidor, e desaparece com ele: nenhuma cópia, nenhum registo do seu conteúdo.
Cada pipeline faz passar um texto de controlo pelo servidor headless e falha se o seu registo alguma vez o mostrar.
Mais ninguém é chamado
A deteção assenta em formatos, regras e dicionários: nenhum modelo de linguagem, nenhum serviço de terceiros. O servidor só chega ao que configurar — o seu fornecedor de identidade, o seu coletor de telemetria.
Cada versão verificável
Cada imagem é assinada por digest, com a sua lista de materiais e a sua proveniência; o pipeline verifica a assinatura antes de publicar seja o que for.

Experimente na página e depois envie uma mensagem à Contee.
A página responde com o mesmo motor que a API: cole um texto típico dos seus fluxos de trabalho. A segurança da imagem verifica-se controlo a controlo na página CISO. Para a API alojada ou a oferta nas suas instalações, envie uma mensagem à Contee.