Konzepte
Noirdoc Shield
Wie Noirdoc Shield eingehende Prompts auf deutscher Infrastruktur zustandslos prüft, sensible Inhalte schwärzt oder blockiert und Antworten ohne Verzögerung weiterleitet.
Noirdoc Shield prüft eingehende Anfragen auf deutscher Infrastruktur, bevor Daten das Gateway in Richtung Modellanbieter verlassen. Je nach Schutzfilter schwärzt Shield erkannte Angaben direkt im Text durch feste Kategorie-Platzhalter wie [PERSON] oder [IBAN] oder blockiert die Anfrage vor der Weiterleitung mit Statuscode 403 (shield_violation).
Ablauf
Noirdoc Shield arbeitet zustandslos in eine Richtung:
- Prüfen auf deutscher Infrastruktur: Das Gateway liest die Textsegmente der Anfrage (einschließlich eingebetteter UTF-8-Textdateien unter 4 MiB) aus und wendet die aktiven Schutzfilter Ihrer Organisation an, bevor eine Verbindung zum Modellanbieter genutzt wird. Welche Felder das je Endpunkt sind, listet Geprüfte Felder (Shield).
- Blockieren oder Schwärzen: Schlägt ein Schutzfilter mit der Aktion
blockan – standardmäßig bei Geheimnissen und Prompt-Injections –, lehnt das Gateway die Anfrage vor der Weiterleitung mit Statuscode 403 und Fehlercodeshield_violationab. Treffer von Filtern mit der Aktionredactersetzt Shield an Ort und Stelle durch feste Platzhalter wie[PERSON],[IBAN]oder[CUSTOM]. - Bereinigt weiterleiten: Nur der bereinigte Text erreicht den Modellanbieter. Im Unterschied zur klassischen Maskierung legt Shield keine Zuordnungstabelle in Redis an und fügt keine zusätzliche Systemanweisung in den Prompt ein.
- Direkt antworten: Das Gateway reicht die Antwort des Modells unverändert durch. Es findet keine Rückübersetzung in der Antwort statt, und beim Streaming entsteht keine Satzpuffer-Verzögerung.
Sie senden
Schreiben Sie Anna Schmidt, dass die Zahlung auf DE89 3704 0044 0532 0130 00 eingegangen ist.
Das Modell sieht
Schreiben Sie [PERSON], dass die Zahlung auf [IBAN] eingegangen ist.
Wurde der gesamte prüfbare Inhalt der Anfrage durch Noirdoc Shield geprüft, setzt das Gateway in der Antwort die Header X-Noirdoc-Shield: redacted=<n> (mit der Anzahl der geschwärzten Stellen, 0 ohne Treffer) und X-Noirdoc-Masked: true. Enthielt eine nicht erzwungene Anfrage neben Text auch Anhänge, die Shield nicht als Text prüfen kann, werden die Textfelder dennoch geprüft und geschwärzt; die Antwort trägt dann X-Noirdoc-Shield: partial; redacted=<n> und X-Noirdoc-Masked: false.
Die Erkennung arbeitet automatisch und senkt das Risiko versehentlich übermittelter Geheimnisse, personenbezogener Daten und Prompt-Injections, ersetzt aber keine fachliche Prüfung Ihrer Eingaben.
Schutzfilter
Unter Models → Shield (sowie per API über /v1/shield/policy) steuern Admins fünf Schutzfilter unabhängig voneinander:
| Schlüssel | Bezeichnung im Portal | Erlaubte Aktionen | Standard | Platzhalter / Umfang |
|---|---|---|---|---|
secrets | Geheimnisse & API-Schlüssel | off, redact, block | block | [SECRET] – API-Schlüssel, private Schlüssel, Cloud-Tokens, Zugangsdaten und hochgradig zufällige Geheimnisse |
pii | Finanz- & Kontaktdaten | off, redact, block | redact | [IBAN], [CREDIT_CARD], [EMAIL], [PHONE], [TAX_ID], [TAX_NUMBER], [VAT_ID], [SSN], [DATE_OF_BIRTH] |
ner | Personennamen & Adressen | off, redact, block | redact | [PERSON], [ADDRESS] |
injection | Prompt-Injection | off, block | block | Kein Schwärzen (redact nicht unterstützt). Prüft nur nicht vertrauenswürdige Rollen (user sowie tool- und Funktionsergebnisse); system, developer und assistant sind ausgenommen. |
custom | Eigene Sperrbegriffe | off, redact, block | redact | [CUSTOM] – bis zu 100 Einträge à 2 bis 256 Zeichen (literale Teilstrings oder reguläre Ausdrücke mit Präfix re:) |
Während injection bewusst nur user- und tool-Segmente auswertet, damit System-Prompts Ihrer Anwendung keine Fehlalarme auslösen, prüfen secrets, pii, ner und custom alle Rollen der Anfrage.
Für Eigene Sperrbegriffe (custom_patterns) können Sie bis zu 100 Einträge mit jeweils 2 bis 256 Zeichen hinterlegen:
- Literale Begriffe ohne Präfix (zum Beispiel
"Projekt Helios") suchen unabhängig von Groß- und Kleinschreibung nach exakt dieser Zeichenfolge. - Reguläre Ausdrücke mit Präfix
re:(zum Beispiel"re:AZ-[0-9]{4}-[0-9]{5}") werden als reguläre Ausdrücke mit linearer Laufzeit kompiliert. Lookaround-Ausdrücke und Rückreferenzen sind nicht erlaubt, und das Muster darf nicht auf den leeren String passen.
Richtlinie und Vorrangfolge
Unter Models → Shield wählen Admins die Standard-Einstellung (mode bzw. shield_policy) der Organisation:
| Wert | Im Portal | Bedeutung |
|---|---|---|
default_off | Auf Abruf | Shield ist standardmäßig aus und wird gezielt je Schlüssel, Tag oder Header eingeschaltet (Standard neu). |
default_on | Standardmäßig aktiv | Shield prüft jede unterstützte Anfrage, sofern Schlüssel, Tag oder Header sie nicht ausschalten (advisory). |
enforced | Erzwungen | Shield prüft jede Anfrage verpflichtend und lässt sich weder per Schlüssel noch per Tag oder Header umgehen. |
Bei jeder Anfrage wertet das Gateway fünf Stufen in fester Reihenfolge aus:
- Aktive Schutzfilter: Stehen alle fünf Schutzfilter auf
off, ist Shield inaktiv. Das Speichern vonenforcedmit fünf ausgeschalteten Filtern lehnt das Gateway mit Statuscode 422 (shield_policy_invalid) ab. - Organisation auf
enforced: Shield ist immer aktiv; abweichende Angaben auf Schlüssel, Request-Tag oder Header können die Prüfung nicht abschalten. - API-Schlüssel (
shield_mode): Die Einstellung Noirdoc Shield am Schlüssel (Aktivonoder Ausoff) entscheidet; Standard (inherit) gibt an die nächste Stufe weiter. - Request-Tags (
X-Noirdoc-Tags): Tragen mitgesendete Tags eineshield_mode-Vorgabe, gewinntonvoroff, sobald mindestens ein Tag aufonsteht;inheritgibt weiter. - Anfrage-Header und Organisationsstandard: Der Header
X-Noirdoc-Shield: onbzw.off(Groß- und Kleinschreibung beliebig) überschreibt den Organisationsstandard; ohne Header giltdefault_on(aktiv) bzw.default_off(inaktiv).
Auf Organisationen mit Noirdoc Shield funktioniert X-Noirdoc-Mask weiterhin als kompatibler Alias für X-Noirdoc-Shield. Auf Bestandsorganisationen, die während der Übergangsfrist noch die klassische Maskierung nutzen, steuert X-Noirdoc-Mask weiterhin die klassische Maskierung, während X-Noirdoc-Shield: on gezielt Noirdoc Shield für diese Anfrage auswählt. Vor der Weiterleitung entfernt das Gateway beide Header.
Dateien und Anhänge
Ob Anfragen überhaupt Datei-, Bild- oder Audioteile enthalten dürfen, steuert unter Models → Shield in den Erweiterten Einstellungen die Option Dateianhänge und Bilder in Anfragen erlauben (allow_file_content). Ist sie ausgeschaltet, lehnt das Gateway jede Anfrage mit Anhängen mit Statuscode 403 (file_content_not_allowed) ab.
Ist die Option eingeschaltet und Noirdoc Shield für die Anfrage aktiv, unterscheidet das Gateway nach Dateityp und Übertragungsweg:
- Eingebettete UTF-8-Textdateien unter 4 MiB (
text/*, JSON, XML, CSV, Markdown, YAML als Base64-data:-URL oder als Text-document-Block bei Messages) dekodiert Shield, prüft den Text mit allen aktiven Schutzfiltern und schreibt die geschwärzte Fassung in die Anfrage zurück. - Binärdokumente, Medien, Referenzen und große Dateien – etwa PDF, DOCX, XLSX, PPTX, Bilder, Audio, Video, Verweise per
file_idoder URL sowie eingebettete Textdateien ab 4 MiB – kann Shield nicht als Text prüfen:- Unter
enforcedlehnt das Gateway die Anfrage vor der Weiterleitung mit Statuscode 422 und Fehlercodeshield_uninspectable_contentab. - Unter
default_onoder einzelner Aktivierung (onohneenforced) prüft und schwärzt Shield alle Textfelder der Anfrage, leitet den nicht prüfbaren Anhang unverändert mit weiter und kennzeichnet die Antwort mitX-Noirdoc-Shield: partial; redacted=<n>sowieX-Noirdoc-Masked: false.
- Unter
Unterstützte Endpunkte
Noirdoc Shield deckt sowohl generative Modell-Endpunkte als auch Retrieval-Endpunkte und einen eigenständigen Prüf-Endpunkt ab:
| Endpunkt | Shield-Prüfung | Hinweise |
|---|---|---|
/v1/chat/completions | ja | Nachrichten, Textteile, JSON-Strings in tool_calls und eingebettete UTF-8-Textdateien unter 4 MiB |
/v1/responses | ja | instructions, input, Funktionsargumente und -ausgaben; die Vorab-Zählung /v1/responses/input_tokens überspringt Shield kostenfrei |
/v1/messages | ja | system, messages, Tool-Blöcke, Text-document-Blöcke und Zitate; die Vorab-Zählung /v1/messages/count_tokens überspringt Shield kostenfrei |
/v1/embeddings | ja | Einzel-Strings, String-Listen, Textfelder multimodaler Objekte sowie Token-ID-Arrays (dekodiert über tiktoken) |
/v1/rerank | ja | query, instruction und documents[] |
POST /v1/shield/inspect | ja | Eigenständige Prüfung ohne Modellaufruf, zum Beispiel vor externen Werkzeugen oder Vektordatenbanken (siehe Shield (/v1/shield)) |
/v1/audio/transcriptions, /v1/audio/speech | nein | Audio-Endpunkte ohne Textprüfung |
/v1/images/generations | nein | Bildgenerierung ohne Shield-Prüfung |
/v1/files, /v1/skills | nein | Datei-Uploads und Skill-Inhalte werden nicht durch Shield geprüft; Auflisten, Metadaten, Herunterladen und Löschen bleiben auch unter enforced erlaubt |
Auf den nicht geprüften Endpunkten (/v1/audio/*, /v1/images/generations sowie inhaltsführenden Aufrufen auf /v1/files und /v1/skills) lehnt das Gateway Anfragen unter enforced – ebenso Anfragen mit X-Noirdoc-Mask: on sowie auf /v1/images/generations mit X-Noirdoc-Shield: on – mit Statuscode 403 (masking_not_supported_for_endpoint) ab, damit kein Inhalt unbeabsichtigt ungeprüft weitergeleitet wird.
| Status | Code | Bedeutung |
|---|---|---|
| 403 | shield_violation | Noirdoc Shield hat die Anfrage vor der Weiterleitung an den Anbieter blockiert, weil ein aktiver Schutzfilter mit der Aktion block angeschlagen hat; message nennt die ausgelöste Regel (secrets, pii, ner, injection oder custom). |
| 403 | masking_not_supported_for_endpoint | Der Endpunkt unterstützt weder Noirdoc Shield noch die klassische Maskierung, aber die Richtlinie steht auf enforced oder die Anfrage sendet X-Noirdoc-Mask: on (auf /v1/images/generations auch X-Noirdoc-Shield: on). Während der Übergangsfrist der klassischen Maskierung bis zum 30.11.2026 betrifft das auf Bestandsorganisationen ohne Shield auch /v1/embeddings und /v1/rerank. |
| 422 | shield_uninspectable_content | Die Shield-Richtlinie steht auf enforced, und die Anfrage enthält Inhalte, die Shield nicht als Text prüfen kann (binary_document wie PDF oder Office, media_not_inspectable wie Bilder, Audio oder Video, file_reference per ID oder URL, file_too_large ab 4 MiB, file_not_decodable oder unrecognised_content). Das Gateway hat die Anfrage nicht weitergeleitet. |
Abrechnung
Noirdoc Shield kostet pauschal +0,40 € je 1 Mio. geprüfter Eingabe-Tokens über alle aktiven Schutzfilter hinweg; einzelne Filter verursachen keine Aufpreise.
- Wann abgerechnet wird: Immer dann, wenn Shield Text prüft – sowohl auf von Noirdoc verwalteten Anbietern als auch bei eigenen Anbieter-Schlüsseln (BYOK, Belastung über das Organisationsguthaben bzw. die Rechnung), bei mit
403 shield_violationgestoppten Anfragen (da die Prüfung ausgeführt wurde und die Weiterleitung verhindert hat) sowie beim direkten Aufruf vonPOST /v1/shield/inspect. - Wann keine Shield-Kosten anfallen: Wenn Shield für die Anfrage deaktiviert ist, auf den Vorab-Endpunkten zur Token-Zählung (
/v1/messages/count_tokens,/v1/responses/input_tokens) oder wenn eine Anfrage bereits vor der Shield-Prüfung abgewiesen wird (etwa bei422 shield_uninspectable_content). - Preiskatalog:
GET /v1/pricesweist den Preis im obersten Feld"shield"aus ({"price_input": "0.40", "price_unit": "per1MTokens", "currency": "EUR", "price_currency": "EUR"}), siehe Modelle & Preise.
Klassische Maskierung
Bestandsorganisationen, die vor Einführung von Noirdoc Shield bereits die klassische umkehrbare Maskierung genutzt oder konfiguriert haben, laufen während einer Übergangsfrist bis zum 30. November 2026 (2026-11-30T23:59:59Z) zunächst unverändert weiter. Jede klassisch maskierte Antwort trägt in dieser Zeit neben X-Noirdoc-Masked: true die standardisierten Hinweis-Header nach RFC 8594:
Deprecation: true
Sunset: Mon, 30 Nov 2026 23:59:59 GMT
X-Noirdoc-Masked: trueDie wichtigsten Unterschiede zwischen beiden Verfahren:
| Merkmal | Noirdoc Shield | Klassische Maskierung (Auslauf bis 30.11.2026) |
|---|---|---|
| Richtung & Zustand | Einweg-Schwärzung ([PERSON], [IBAN]) oder Blockieren, 100 % zustandslos | Umkehrbare Pseudonyme (<<PERSON_1>>) mit verschlüsselter Zuordnung in Redis |
| Streaming | Sofortige Durchleitung ohne Satzpuffer | Satzweises Zurückhalten für die Rückübersetzung in der Antwort |
| Schutzumfang | Geheimnisse, PII, Namen/Adressen, Prompt-Injection und eigene Sperrbegriffe (re:) | Personenbezogene Daten und Namen/Adressen |
| Endpunkte | Chat, Responses, Messages, Embeddings, Rerank und POST /v1/shield/inspect | Nur Chat Completions, Responses und Messages |
| Dateien | Eingebettete UTF-8-Textdateien unter 4 MiB inline | Base64-Dateianalyse für PDF, DOCX, XLSX und optional OCR (file_analysis_mode) |
| Preis | +0,40 € / 1 Mio. geprüfte Eingabe-Tokens | 0,00 € Aufpreis während der Übergangsfrist |
Während der Übergangsfrist können Bestandsorganisationen Noirdoc Shield parallel erproben, ohne die gesamte Organisation sofort umzustellen:
- Pro Anfrage: Senden Sie
X-Noirdoc-Shield: on(währendX-Noirdoc-Maskbis zur Umstellung weiterhin die klassische Maskierung steuert). - Pro API-Schlüssel oder Request-Tag: Setzen Sie
shield_modefür ausgewählte Schlüssel oder Tags aufon. - Eigenständig: Prüfen Sie Texte vorab über
POST /v1/shield/inspect.
Admins können ihre Organisation jederzeit unter Models → Shield per Klick auf Jetzt auf Noirdoc Shield umstellen oder durch einen Schreibzugriff auf PUT /v1/shield/policy bzw. PATCH /v1/shield/policy dauerhaft umstellen (legacy_mask_active: false). Die bestehende Richtlinie (default_off, default_on oder enforced) wird dabei übernommen; ein Wechsel zurück zur klassischen Maskierung ist nicht vorgesehen. Nach dem 2026-11-30T23:59:59Z werden alle verbleibenden Bestandsorganisationen automatisch auf Noirdoc Shield umgestellt.