PII aus Azure OpenAI API-Aufrufen schwaerzen

Senden Sie keine Namen, E-Mails und Geheimnisse mehr an Azure OpenAI. Erfahren Sie, wie Sie PII aus jedem Azure OpenAI API-Aufruf schwaerzen — mit einer Sicherheitsschicht auf Proxy-Ebene, ganz ohne Code-Aenderungen.

Das Problem: PII gelangt ueber Azure OpenAI API-Aufrufe nach aussen

Die Nutzung von Azure OpenAI bedeutet nicht, dass Ihre Daten privat bleiben. Jeder chat.completions.create-Aufruf sendet Ihren Prompt an Ihren Azure-gehosteten Modell-Endpunkt. Wenn dieser Prompt vom Benutzer eingereichte Texte enthaelt — Support-Tickets, Mitarbeiterdaten, Finanzdaten — traegt er Namen, E-Mails, Telefonnummern und andere PII zum Azure-Dienst.

const response = await client.chat.completions.create({
  model: "gpt-4o",
  messages: [
    {
      role: "user",
      content: `Analyze this loan application:

      Applicant: Maria Gonzalez
      Email: maria.gonzalez@bankco.com
      Phone: (305) 555-0234
      SSN: 445-72-1198
      Annual income: $87,000
      Address: 2100 Brickell Ave, Miami, FL 33129
      Account: 4916-3388-1122-7744
      Notes: azure_storage_key=DefaultEndpointsProtocol=https;AccountKey=secret123`,
    },
  ],
});

Selbst in Azures Enterprise-Umgebung hat diese Anfrage gerade einen Namen, eine E-Mail-Adresse, eine SSN, Einkommensdaten, eine Adresse, eine Kreditkartennummer und einen Storage-Account-Key an den Dienst gesendet. Compliance-Teams nehmen oft an, dass „Azure = sicher" bedeutet, aber die Daten in Ihren Prompts liegen in Ihrer Verantwortung.

Warum Azure OpenAI das PII-Problem nicht loest

Azure OpenAI laeuft auf Microsofts Infrastruktur und bietet Datenresidenz, private Endpunkte und kein Modelltraining mit Ihren Daten. Das ist besser als die oeffentliche OpenAI API fuer viele Anwendungsfaelle. Aber:

  • PII wird weiterhin vom Modell verarbeitet — Ihr Deployment erhaelt den vollstaendigen Prompt einschliesslich sensibler Daten
  • Logging und Monitoring koennen PII in Diagnose-Traces erfassen
  • Datenresidenz bedeutet nicht Datenminimierung — die DSGVO verlangt, dass Sie die verarbeiteten personenbezogenen Daten minimieren, nicht nur den Verarbeitungsort
  • Azure-Audit-Logs und Abuse-Monitoring koennen Inhalte speichern, sofern Sie nicht explizit widersprechen

Das Prinzip der minimalen Berechtigung gilt auch fuer KI: Senden Sie nur das, was das Modell braucht.

Die Loesung: Proxy-basierte Schwaerzung mit Grepture

Grepture ist ein Open-Source-Sicherheitsproxy, der zwischen Ihrer Anwendung und Azure OpenAI sitzt. Jede Anfrage wird auf PII, Geheimnisse und sensible Muster gescannt, bevor sie Ihr Deployment erreicht. Sensible Daten werden mit umkehrbaren Token maskiert — und in der Antwort wiederhergestellt, sodass Ihre Anwendung normal funktioniert.

Ihr Code aendert sich nicht. Ihre Prompts bleiben nuetzlich. Das Modell sieht niemals echte PII.

Einrichtung in 3 Minuten

1. SDK installieren

npm install @grepture/sdk

2. API Key erhalten

Registrieren Sie sich unter grepture.com/en/pricing — der kostenlose Plan umfasst 1.000 Anfragen/Monat. Kopieren Sie Ihren API Key aus dem Dashboard.

3. Azure OpenAI-Client einbinden

Azure OpenAI verwendet dasselbe OpenAI SDK mit einer eigenen Base-URL und einem API-Key-Header:

import OpenAI from "openai";
import { Grepture } from "@grepture/sdk";

const grepture = new Grepture({
  apiKey: process.env.GREPTURE_API_KEY!,
  proxyUrl: "https://proxy.grepture.com",
});

const client = new OpenAI({
  ...grepture.clientOptions({
    apiKey: process.env.AZURE_OPENAI_API_KEY!,
    baseURL:
      "https://your-resource.openai.azure.com/openai/deployments/gpt-4o",
  }),
  defaultQuery: { "api-version": "2024-10-21" },
  defaultHeaders: { "api-key": process.env.AZURE_OPENAI_API_KEY! },
});

// Every request is now scanned and protected
const response = await client.chat.completions.create({
  model: "gpt-4o",
  messages: [{ role: "user", content: userInput }],
});

Das war's. clientOptions() leitet den Traffic ueber den Grepture Proxy. Ihr Azure API Key wird sicher ueber den X-Grepture-Auth-Forward-Header weitergeleitet — Azure OpenAI authentifiziert Ihre Anfragen weiterhin wie gewohnt.

Was erkannt wird

Grepture wird im Free-Tier mit ueber 50 Erkennungsmustern und im Pro-Tier mit ueber 80 ausgeliefert:

KategorieBeispieleTier
Persoenliche IdentifikatorenNamen, E-Mails, Telefonnummern, SSNs, GeburtsdatenFree (Regex), Pro (AI)
FinanzdatenKreditkartennummern, IBANs, BankleitzahlenFree
ZugangsdatenAPI Keys, Bearer Tokens, Passwoerter, Connection StringsFree
Netzwerk-IdentifikatorenIP-Adressen, MAC-AdressenFree
Freitext-PIINamen, Organisationen und Adressen in unstrukturiertem TextPro (lokale AI-Modelle)
Adversarial InputsPrompt-Injection-VersucheBusiness

Die gesamte Erkennung laeuft auf der Grepture-Infrastruktur — es werden keine Daten an weitere Drittanbieter weitergeleitet.

Maskieren und Wiederherstellen: umkehrbare Schwaerzung

Grepture entfernt PII nicht einfach nur — es ersetzt sensible Werte durch Token, sendet den bereinigten Prompt an Azure OpenAI und stellt die Originalwerte in der Antwort wieder her.

Was Azure OpenAI sieht:

Analyze this loan application:
Applicant: [PERSON_1]
Email: [EMAIL_1]
SSN: [SSN_1]
Annual income: [FINANCIAL_1]
Address: [ADDRESS_1]
...

Was Ihre App zurueckbekommt:

The loan application from Maria Gonzalez
(maria.gonzalez@bankco.com) shows an annual income
of $87,000 with a Miami, FL address. The application
meets standard underwriting criteria.

Das Modell verarbeitet saubere Daten. Ihre Anwendung erhaelt die vollstaendige, personalisierte Antwort. Keine PII erreicht jemals das Azure OpenAI Deployment.

Streaming-Unterstuetzung

Grepture verarbeitet die Server-Sent Events von Azure OpenAI nativ. Wenn Sie stream: true verwenden, detokenisiert der Proxy die Chunks in Echtzeit — kein Puffern der gesamten Antwort, kein Latenz-Nachteil.

const stream = await client.chat.completions.create({
  model: "gpt-4o",
  messages: [{ role: "user", content: userInput }],
  stream: true,
});

for await (const chunk of stream) {
  // Tokens are restored in real time
  process.stdout.write(chunk.choices[0]?.delta?.content || "");
}

Naechste Schritte