Voltar ao blog
Conformidade·25 de maio de 2026·8 min de leitura

Uso de LLMs em conformidade com a DSGVO — mascaramento de PII, AVV e retenção zero de dados

Guia prático para empresas alemãs que querem usar Claude / Gemini / GPT em produção em conformidade com o RGPD. Código para mascaramento de PII, com quem celebrar um AVV, Zero Data Retention diretamente com Anthropic / Google (Enterprise), logs de auditoria com correlação por Request-ID e a questão Schrems II.

Uso de LLM em conformidade com o RGPD em empresas alemãs — o que você precisa antes que Claude ou GPT possa entrar em produção. Configuração prática com mascaramento de PII, logs de auditoria, Zero Data Retention na Anthropic / Google e a questão do AVV.

Os três componentes obrigatórios

  1. Mascaramento de PII antes da chamada ao upstream — você não pode enviar dados pessoais em texto claro sem filtragem a provedores dos EUA
  2. Acordo de processamento de dados (AVV / Art. 28 do RGPD) — diretamente com o provedor do modelo (Anthropic, Google, OpenAI); a Kunavo não oferece AVV
  3. Trilha de auditoria — cada chamada deve ser rastreável e documentada com limitação de finalidade

1) Mascaramento de PII — a parte prática

Antes que um prompt saia do seu próprio backend, ele passa por uma etapa de mascaramento. E-mails, números de telefone, nomes de pessoas, IBANs e números de seguridade social são substituídos por tokens:

pii_mask.py
# Vor jedem LLM-Aufruf PII maskieren — niemals Klartext-Personendaten
# an die Upstream-API senden.
import re
from openai import OpenAI

PII_PATTERNS = [
    (re.compile(r"[\w.+-]+@[\w-]+\.[\w.-]+"), "<EMAIL>"),
    (re.compile(r"\b\d{4,}\b"), "<NUMBER>"),
    (re.compile(r"\b(?:\+49|0)\s*\d{2,4}\s*\d{4,8}\b"), "<PHONE_DE>"),
]

def redact(text: str) -> tuple[str, dict[str, str]]:
    redacted = text
    mapping: dict[str, str] = {}
    for i, (pat, tag) in enumerate(PII_PATTERNS):
        for match in pat.finditer(text):
            key = f"{tag}_{i}_{match.start()}"
            mapping[key] = match.group(0)
            redacted = redacted.replace(match.group(0), f"[{key}]")
    return redacted, mapping

def restore(text: str, mapping: dict[str, str]) -> str:
    for key, original in mapping.items():
        text = text.replace(f"[{key}]", original)
    return text

A tabela de correspondência permanece apenas localmente. Se a resposta do LLM precisar retornar dados pessoais reinseridos (por exemplo, “Olá, Sra. Schmidt”), fazemos a substituição somente depois da resposta. Assim, o upstream sempre vê apenas texto anonimizado.

2) AVV — quem precisa de qual contrato

  • Você ↔ Kunavo: a Kunavo não oferece um AVV conforme o Art. 28 do RGPD. As solicitações são processadas nos Estados Unidos e encaminhadas a provedores upstream; o que eles fazem com o conteúdo é regido por suas próprias políticas de privacidade e retenção (consulte /legal/privacy)
  • Você ↔ provedor do modelo: se sua carga de trabalho exigir um AVV, celebre-o diretamente com Anthropic, OpenAI ou Google, sob os termos comerciais ou empresariais deles, e chame o modelo diretamente. Ao usar a Kunavo, você não herda uma cadeia de subprocessadores
  • Risco Schrems II: Anthropic e OpenAI estão sediadas nos Estados Unidos. Sem AVV, a Kunavo também não oferece cláusulas contratuais-tipo (SCC) para a transferência aos EUA. Se sua avaliação de risco exigir um provedor exclusivamente da UE, a Kunavo não é adequada: nenhum provedor do nosso catálogo está na UE, e toda solicitação passa pelo nosso gateway em US-East

3) Log de auditoria — registre cada chamada

Por solicitação: ID da solicitação, ID do usuário, modelo, prompt com hash, consumo de tokens, latência, ID da solicitação como chave de correlação nos seus próprios logs:

audit.py
# Jeder LLM-Aufruf wird in einem unveränderlichen Audit-Log festgehalten
import json, time, uuid
from datetime import datetime

def call_with_audit(user_id: str, prompt: str, model: str) -> dict:
    request_id = str(uuid.uuid4())
    redacted_prompt, mapping = redact(prompt)

    # Audit-Log VOR dem Call schreiben
    audit_log.write({
        "request_id": request_id,
        "user_id": user_id,
        "timestamp": datetime.utcnow().isoformat(),
        "model": model,
        "prompt_redacted": redacted_prompt,
        "prompt_hash": hashlib.sha256(prompt.encode()).hexdigest(),
        "pii_tags_count": len(mapping),
    })

    resp = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": redacted_prompt}],
        extra_headers={
            "X-Request-ID": request_id,  # nur für deine eigenen Logs; Kunavo wertet ihn nicht aus
        },
    )

    response_text = resp.choices[0].message.content
    # Bei Bedarf PII zurück mergen (nur in der lokalen DB)
    final_text = restore(response_text, mapping)

    audit_log.write({
        "request_id": request_id,
        "response_redacted": response_text,
        "tokens": resp.usage.model_dump(),
        "duration_ms": int((time.time() - start) * 1000),
    })
    return {"text": final_text, "request_id": request_id}

O X-Request-ID é sua própria chave: a Kunavo não avalia nem armazena esse cabeçalho, e nosso painel de uso não mostra qual provedor upstream atendeu uma chamada. Ali, você vê o próprio ID da chamada da Kunavo para cada chamada, com horário, modelo, tokens, custo e latência; faça a correspondência com seu log de auditoria usando o horário e o modelo.

Zero Data Retention (ZDR) — somente diretamente com o provedor do modelo

Por padrão, Anthropic e Google armazenam logs dos prompts por 30 dias (Anthropic) e 60 dias (Google) para monitoramento de abuso. Para cargas de trabalho sensíveis ao RGPD, você pode solicitar ZDR diretamente ao provedor, em seu próprio contrato. A Kunavo não oferece roteamento ZDR nem uma camada ZDR: as solicitações feitas pela Kunavo são processadas nos Estados Unidos e encaminhadas a provedores upstream, sujeitos às próprias regras de retenção.

  • Anthropic ZDR: disponível para clientes Enterprise em contrato direto com a Anthropic. Não disponível pela Kunavo
  • Google Vertex AI: condições semelhantes no seu próprio contrato com o Google Cloud, além da possibilidade de escolher uma região da UE (europe-west4 / Países Baixos). A Kunavo não roteia por uma região da UE
  • OpenAI: Zero Data Retention somente para o nível Enterprise, em contrato direto com a OpenAI. Não pode ser intermediado pela Kunavo

Residência dos dados

  • Roteamento da Kunavo: no gateway, em uma única região (US-East, Ashburn). Apenas o Anycast Edge à frente termina o TLS perto de você
  • Persistência dos dados da conta: um único banco de dados primário em US-East, com snapshots diários criptografados dos volumes. Não oferecemos roteamento exclusivo para a UE
  • Imposto sobre vendas: o checkout não informa imposto sobre vendas nem gera fatura; para obter um comprovante para a contabilidade, escreva para contact@kunavo.com

O que a maioria das equipes de compliance ignora

  • O conteúdo do prompt é dado pessoal quando contém nomes — mesmo que o usuário não tenha digitado "Müller", mas apenas "meu nome é Petra". A mascaramento deve identificar heuristicamente nomes próprios e nomes de entidades
  • O treinamento com seus dados é desativado por padrão na Anthropic e no Google, ao contrário do ChatGPT para consumidores. A própria Kunavo não treina com seu conteúdo; o que o provedor upstream faz com ele é regido pelas condições próprias do provedor. A Kunavo não oferece garantia contratual sobre isso
  • Aplicar hash ao conteúdo das saídas — armazenamos apenas o hash, não o texto completo, caso seu DPA determine isso
  • Direito de exclusão — em uma solicitação baseada no Art. 17 do RGPD, você precisa conseguir excluir o prompt dos seus logs. Isso só funciona se seus logs de auditoria puderem ser excluídos (ou seja, não estiverem em estruturas de blockchain somente de anexação)

Aviso legal e banner de cookies

Para um percurso completo de conformidade, consulte nosso /legal/impressum conforme o § 5 do DDG e a política de privacidade em /legal/privacy. O banner de cookies deve ser gerenciado no seu próprio site (por exemplo, com Usercentrics, Cookiebot ou Klaro) — a própria Kunavo usa apenas cookies funcionais.

Pronto? Faça o cadastro gratuito, carregue a partir de $10, use o modelo pay-as-you-go e mantenha um saldo que nunca expira. Se sua carga de trabalho exigir AVV, ZDR ou residência de dados na UE, celebre o contrato diretamente com o provedor do modelo.