Data masking in de AI Gateway: wat echt werkt
.png)
Gebouwd voor snelheid: ~10ms latentie, zelfs onder belasting
De razendsnelle manier om je modellen te bouwen, volgen en implementeren!
- Verwerkt 350+ RPS op slechts 1 vCPU — geen tuning nodig
- Productieklaar met volledige enterprise-ondersteuning
Wat data masking daadwerkelijk is
Data masking vervangt een gevoelige waarde door een vervangende waarde die veilig is om te tonen, terwijl de omringende data bruikbaar blijft. Het komt uit de databasewereld: geef QA een kopie van productie waarin elk kaartnummer is veranderd in 4111-****-****-1234, en ze kunnen realistisch testen zonder echte PII in handen te hebben. Richt je dat op een LLM-gateway, dan verandert de situatie: je maskeert vrije tekst die onderweg is naar een derde partij, binnen een gesprek dat logisch moet blijven redeneren.
Deze termen worden voortdurend als synoniemen gebruikt. Dat zijn het niet.
Omkeerbaar vs. onomkeerbaar is het cruciale verschil. Tokenisatie, FPE en encryptie werken in twee richtingen — iemand beheert een kluis of sleutel, wat weer een nieuw asset is om te beschermen. Masking, redactie en anonimisering werken in één richting: eenvoudiger, veiliger, maar onbruikbaar zodra een stroomafwaarts proces de echte waarde nodig heeft.
Pseudonimisering is geen anonimisering. Onder de AVG/GDPR is gepseudonimiseerde data nog steeds persoonsgegevens en valt deze onder de regelgeving; alleen echt geanonimiseerde data valt buiten de regelgeving (Overweging 26). Het vervangen van elke naam door een vaste User-8812 is pseudonimisering, en het anonimisering noemen houdt geen stand bij een audit.
Een derde as wordt gemakkelijk over het hoofd gezien: consistentie staat los van omkeerbaarheid. Een maskeringsmechanisme kan deterministisch zijn — dezelfde invoer leidt altijd tot dezelfde placeholder — zonder omkeerbaar te zijn. Het is juist dit determinisme dat een model in staat stelt om gedurende een gesprek te redeneren over "dezelfde persoon".
Wat er breekt wanneer je LLM-verkeer maskeert
Dit is het gedeelte dat de meeste artikelen overslaan, maar het bepaalt wel of je ontwerp in de praktijk standhoudt.
De kwaliteit van de model-output neemt af, op onvoorspelbare wijze. Verander Bel ons kantoor op 312-555-1234 in Bel ons kantoor op ************ en het model weet niet meer dat het om een telefoonnummer ging — asterysken bevatten immers geen type-informatie. Gelabelde placeholders zoals [PHONE_NUMBER] behouden het type, maar verklappen aan iedereen die de prompt ziet wel wat er stond. Samenvatten heeft er nauwelijks last van; extractie faalt direct; het correleren van twee entiteiten faalt op een onopgemerkte manier, wat nog erger is.
Tool calls hebben de echte waarde nodig. Dit is het meest kritieke punt. Een agent die customer@acme.com maskeert bij de invoer, kan daarna niet lookup_account(email=...) aanroepen. Het maskeren van het modelpad terwijl het toolpad open blijft, creëert precies het tegenovergestelde lek: het model heeft het adres nooit gezien, maar de tool-argumenten sturen het wel door naar een externe MCP server. Bepaal per tool welke partij je vertrouwt.
Gestructureerde output en JSON schemas breken. Als je werkt met structured outputs met JSON Schema, kan masking een waarde opleveren die niet meer voldoet aan de eisen van het veld: een veld met format: email kan geen [REDACTED EMAIL] bevatten, en een integer-veld accepteert geen asterysken. Masking die de lengte behoudt is vriendelijker omdat het de vorm in stand houdt. Het maskeren van de output-stap is nog kwalijker — het model genereerde geldige JSON, het maskeringsmechanisme herschreef een waarde daarbinnen, en je parser gooit een error op een respons die het model correct had geformuleerd.
Consistentie over meerdere opeenvolgende vragen (multi-turn). Turn één: “Priya Raman is de accounteigenaar.” Turn vier: “Is zij nog steeds de eigenaar?” Als turn één veranderde in asterysken, heeft het model geen context meer om te volgen. Deterministische pseudonimisering lost dit op, maar alleen als de maskeerder de status tussen opeenvolgende vragen onthoudt — iets wat een stateless guardrail niet doet.
RAG-retrieval op gemaskeerde tekst. Maskeer je documenten vóór het indexeren, dan bevat de embedding de entiteit niet meer. Een zoekopdracht naar die entiteit zal de relevante chunk dus niet ophalen. Indexeer je ongemaskeerd en maskeer je pas tijdens retrieval, dan bevat je vector database de ongemaskeerde corpus — precies wat je wilde voorkomen.
Lokaal en gericht toegepast is masking zeer waardevol. Globaal toegepast maakt het de productkwaliteit ongemerkt slechter, zonder dat iemand de link legt.
Waar teams de fout in gaan
Aannemen dat masking omkeerbaar is. Een team maskeert PII richting het model, neemt aan dat een ander proces dit op de terugweg weer herstelt, en bouwt daarop voort. Tenzij je voor een omkeerbaar schema hebt gekozen en er een systeem is dat de sleutels beheert, ziet de aanroeper ook gewoon de gemaskeerde waarde.
De prompt maskeren en het toolpad vergeten. Data beweegt zich op vier plekken: naar het model toe, uit het model vandaan, naar een tool toe, uit een tool vandaan. Vaak wordt slechts één route afgedekt. Het datalek ontstaat vervolgens via een tool-resultaat dat door niemand werd gecontroleerd.
Het redigeren van logs zien als een data-flow control. Het redigeren van opgeslagen logs beperkt wie binnen je bedrijf prompts kan lezen. De provider heeft de originele tekst echter al ontvangen.
Kiezen voor onomkeerbare masking bij een probleem dat omkeerbaarheid vereist. Als een stroomafwaarts proces de oorspronkelijke waarde weer nodig heeft, is masking de verkeerde techniek. Je hebt tokenisatie of FPE nodig, wat betekent dat je een kluis of sleutelbeheer moet inrichten.
Hoe masking werkt in TrueFoundry
Masking is hier geen afzonderlijk product. Elke guardrail beschikt over twee instellingen — Operation Mode en Enforcement Strategy — waarbij masking een waarde is van de eerste instelling.
Mutate vs Validate
Prioriteit is het volledige ordeningsmodel voor masking. Drie mutate guardrails op één hook draaien op volgorde, waarbij elke guardrail de output van de voorgaande ziet: een secrets masker op 1 en een regex masker op 2 betekent dat de regex guardrail tekst verwerkt die al leest als ***REDACTED***.
Input mutation werkt blokkerend en draait eerst — het modelverzoek kan pas starten als de prompt definitief is. Input validation draait vervolgens op de achtergrond parallel mee. Als de validatie halverwege faalt, annuleert de gateway het modelverzoek, zodat je hier niet voor betaalt. Output mutation en validation draaien synchroon nadat de respons is binnengekomen; op dat moment zijn de modelkosten al gemaakt.

MCP tool calls voegen twee synchrone hooks toe: pre-invoke, waarbij een fout betekent dat de tool nooit draait, en post-invoke, waarbij een fout het resultaat tegenhoudt. Guardrails draaien op elke tool call afzonderlijk — vijf tools betekent vijf sets aan controles.

Enforce vs Enforce But Ignore On Error
De tweede instelling maakt onderscheid tussen twee soorten fouten: de guardrail heeft iets gedetecteerd, versus de guardrail is zelf gecrasht.
Strategie
Bij schending
Bij guardrail fout
Enforce
Blokkeren
Blokkeren (fail-closed)
Enforce But Ignore On Error
Blokkeren
Doorlaten (graceful degradation)
Audit
Doorlaten, alleen loggen
Doorlaten
De documentatie noemt Enforce But Ignore On Error “de veiligste standaardinstelling” en raadt het ingroeipad Audit → Enforce But Ignore On Error → Enforce aan.

Welke ingebouwde functies daadwerkelijk kunnen maskeren
De uitspraak “We hebben een PII-guardrail” zegt nog niets over de vraag of deze daadwerkelijk kan maskeren.
PII / PHI Detection is een vreemde eend in de bijt: het kan niet blokkeren, alleen maskeren. Als de vereiste is “weiger elk verzoek dat een BSN bevat”, dan is dit niet de juiste guardrail.

De gedocumenteerde opties voor de enforcing-strategie zijn alleen enforce en enforce_but_ignore_on_error — audit staat er niet bij, in tegenstelling tot Secrets, Regex en SQL Sanitizer. Een uitrol die begint met audit is dus niet bij alle ingebouwde guardrails hetzelfde. [VERIFY] of dit een daadwerkelijke beperking is of een ontbrekend stuk in de documentatie.
Regex Pattern Matching geeft gelabelde placeholders in plaats van asterysken. Het bevat 46 presets — BSN/SSN, creditcards, paspoorten van tien landen, cloud keys, GitHub- en Slack-tokens, IP-adressen — plus custom patronen, zoals EMP-\d{6} → [REDACTED EMPLOYEE ID].

Onder de externe guardrail-integraties vallen onder meer Google Model Armor, CrowdStrike AIDR, F5 AI Security, TrojAI, Enkrypt AI, Pillar Security, Lasso (classifix), HiddenLayer (/redact-*), DeepKeep en Noma onder de categorie die kan muteren — de laatste twee vereisen zelfs Mutate. Alleen Validate: Cisco AI Defense, Gray Swan Cygnal, Patronus, NVIDIA NeMo, Guardrails AI, Arthur AI. Een vendor die alleen validate ondersteunt vragen om te maskeren, is een dooplopend spoor.
Google Model Armor kent een valkuil bij de installatie: Mutate vereist zowel een SDP inspect template als een de-identify template in Google Cloud, gekoppeld aan het Model Armor template, waarbij de transformatie staat ingesteld op “Replace with infoType name”. Zonder beide faalt de mutatie.

De vraag over unmasking, helder beantwoord
De eigen masking guardrails van TrueFoundry werken in één richting. Het model ziet de gemaskeerde waarde en de aanroeper ook. PII / PHI Detection, Secrets Detection en Regex Pattern Matching bieden volgens de documentatie geen manier om het origineel te herstellen, en er is vanaf september 2026 geen token vault op gateway-niveau of rehydratiestap gedocumenteerd.
Er is precies één gedocumenteerde optie die in twee richtingen werkt, en die is van een externe partij. CrowdStrike AIDR ondersteunt format-preserving encryption: wanneer Operation op Mutate staat en de invoerstap de waarden heeft versleuteld met FPE, geeft de gateway de resulterende fpe_context op de outputstap terug aan AIDR als input_fpe_context en roept POST {baseUrl}/v1/unredact aan. Zo worden van begin tot eind dezelfde sleutels gebruikt. Een echt omkeerbaar pad — maar het vereist CrowdStrike, Mutate-modus en een fpe_context van het invoerpad.

Als je applicatie de echte waarde dus weer terug nodig heeft, vertrouw daarvoor dan niet op de gateway. Bewaar de waarde in je eigen applicatie, stuur de gemaskeerde versie door en voeg de data later weer samen op basis van een ID dat je zelf beheert. Eén gerelateerde eigenschap van AIDR verrast mensen vaak: zodra het een schending detecteert, verzacht Mutate dit niet tot een redactie — het verzoek geeft nog steeds een 400-foutmelding.
Een uitgewerkt voorbeeld: een interne support-copilot
Een support-copilot leest ticket-teksten en zoekt accountgegevens op via een MCP server. Tickets bevatten regelmatig e-mailadressen, telefoonnummers en interne medewerkers-ID's van klanten.
Bepaal wat de provider nooit mag bereiken. E-mailadressen en telefoonnummers: maskeren. Medewerkers-ID's: maskeren met een label, zodat het model twee medewerkers in hetzelfde ticket nog steeds uit elkaar kan houden. Per ongeluk geplakte inloggegevens: ook op de terugweg maskeren.
Kies modi en prioriteiten. PII / PHI Detection op LLM Input, Mutate (de enige modus), prioriteit 1. Regex Pattern Matching op LLM Input, Mutate, prioriteit 2, custom patroon EMP-\d{6} → [REDACTED EMPLOYEE ID]. Secrets Detection op LLM Output, Mutate. Start ze allemaal in de meest flexibele strategie die ze ondersteunen.
Kies bewust het pad voor tools. De account-lookup heeft het echte e-mailadres nodig, dus de maskeringsregel richt zich op het model, niet op de MCP server. Secrets Detection draait in plaats daarvan op MCP Post-Invoke, om inloggegevens op te vangen die terugkomen in een tool-resultaat. Leg vast waarom: de MCP server bevindt zich binnen je eigen VPC en de modelprovider niet. Die redenering vormt de feitelijke beheersmaatregel.

Koppel het met een policy. Het registreren van een guardrail past deze nog niet toe op het verkeer. Ga naar AI Gateway → Policies → Guardrails → Add Rule en koppel het aan targets (modellen, MCP servers, optioneel per tool), subjects (gebruikers, teams, virtuele accounts met IN / NOT IN), metadata en hooks. Overeenkomende regels worden per hook samengevoegd.
Monitoor het voordat je erop vertrouwt. Elke guardrail vormt een eigen span in Monitor → Request Traces, met uitvoeringstijd, resultaat, scope, input, output en mutaties. Een mutatiepercentage van vrijwel nul op een drukke hook betekent dat je patronen niet kloppen; een percentage van bijna 100% betekent dat je er snel achter gaat komen wat masking doet met de kwaliteit van de antwoorden.

Belangrijke aandachtspunten
Masking werkt niet op gestreamde output. Output guardrails worden volledig overgeslagen wanneer "stream": true staat ingesteld, omdat het beoordelen van een respons de volledige tekst vereist. Input guardrails hebben hier geen last van. De meeste chat-interfaces streamen standaard, waardoor masking aan de output-zijde in de praktijk niet actief is op het scherm dat de gebruiker daadwerkelijk ziet.
System prompts worden nooit gemaskeerd. De gateway verwijdert deze voordat de content naar een guardrail wordt gestuurd, waardoor ze nooit gecontroleerd, geblokkeerd of geredigeerd worden. De enige uitzondering is CrowdStrike AIDR, die de system prompt wel ziet maar nooit aanpast. Zet je een sleutel in een system prompt, dan kan geen enkele masking guardrail je daartegen beschermen.
Het redigeren van logs is een andere beheersmaatregel dan Mutate. De op regels gebaseerde Logging Configuration van TrueFoundry redigeert patronen uit opgeslagen data waarbij weigeren voorrang heeft — één overeenkomende regel met Log uitgeschakeld onderdrukt de volledige data. De documentatie is hier helder over: “Redactie wordt alleen toegepast op de gelogde kopie… Het live verzoek dat naar de modelprovider wordt gestuurd, wordt nooit gewijzigd.” Het regelt wie binnen je organisatie prompts kan lezen, niet wat het bedrijf verlaat. Ons aanvullende artikel over data loss prevention voor LLM-verkeer behandelt de uitgaande datastroom (egress).

Volgorde kan een blokkade veranderen in een goedkeuring. DeepKeep beschrijft dit heel concreet: het pas de prioriteit toe van de regel die als eerste staat vermeld onder de geactiveerde regels, niet de meest strenge actie. “Als PII vóór Adversarial staat, wordt een jailbreak die ook PII bevat geredigeerd en doorgelaten in plaats van geblokkeerd.” Dit geldt voor elke mutate-keten — plaats regels die moeten blokkeren altijd vóór regels die maskeren.
PII / PHI Detection is alleen beschikbaar via TrueFoundry-hosting. Het draait op Azure AI Language en is niet beschikbaar bij self-hosted of hybride (“alleen Gateway Plane”) uitrolopties. Gebruik Azure PII met je eigen sleutel, of kies voor CrowdStrike.
Aanbevolen artikelen
- Data Loss Prevention voor LLM-verkeer — de detectie- en uitstroomzijde
- PII Redactie: Gateway vs Applicatie — waar de beheersmaatregel hoort te leven
- TrueFoundry AI Gateway Guardrails Uitgelegd — het volledige guardrail-model
- LLM Structured Outputs en JSON Schema — waarom masking en schema's botsen
- Het bouwen van een AI Governance Framework — de bovenliggende beleidslaag
Conclusie
Data masking is een goede beveiligingsmaatregel die vaker verkeerd dan goed wordt toegepast. Het probleem ligt zelden bij het maskeringsmechanisme zelf — het zit in de aannames eromheen: dat masking omkeerbaar is, dat het toolpad is afgedekt, dat het redigeren van logs hetzelfde is, en dat het model net zo goed redeneert over asterysken.
Er zijn vier keuzes die je vooraf helder moet vastleggen. Welke entiteitstypen absoluut niet naar buiten mogen. Op welke van de vier hooks elke regel actief is. Of een stroomafwaarts proces de oorspronkelijke waarde weer nodig heeft — want die vraag bepaalt de keuze tussen masking of tokenisatie. En welke impact op de outputkwaliteit je acceptabel vindt, gemeten op basis van data in plaats van aannames.
Bouw het vervolgens gericht op: start in Audit waar de guardrail dat toestaat, analyseer een week aan traces, schaal op naar Enforce But Ignore On Error, en bewaar volledige Enforce voor routes waar een fail-closed principe vereist is. Een gateway is de aangewezen plek voor dit werk — het centrale punt waar elk model, team en agent langs komt. Maar een maskeringsregel die je niet gemonitord hebt, is een regel waarvan je de werking niet kent.
TrueFoundry AI Gateway levert een latentie van ~3–4 ms, verwerkt 350+ RPS op 1 vCPU, schaalt moeiteloos horizontaal en is klaar voor productie, terwijl LiteLLM last heeft van hoge latentie, moeite heeft boven een gemiddeld aantal RPS, geen ingebouwde schaling heeft en het meest geschikt is voor lichte workloads of prototypes.



Eén gateway voor elk LLM, elke agent en elke MCP-server
Recente blogs
Veelgestelde vragen
What is data masking in an AI gateway?
Replacing sensitive values in a prompt, response or tool payload with a substitute, inline in the request path, before the data reaches a model provider or external tool. In TrueFoundry this is the Mutate operation mode: the guardrail rewrites the matching spans and the rewritten version continues downstream. Mutate guardrails run by priority, lower first, and can still block.
What is the difference between data masking and redaction?
Masking overwrites characters while often preserving format — 4111-****-****-1234 keeps the shape of a card number — and redaction removes the value entirely, usually leaving a label like [REDACTED SSN]. Both are irreversible. Read the examples, not the noun: TrueFoundry’s PII guardrail produces length-matched asterisks, its Regex guardrail labelled tokens.
Can masked data be unmasked on the way back?
Not by default. TrueFoundry’s PII, Secrets and Regex guardrails are one-way — model and caller both see the masked value, and no restore step is documented. The single documented round-trip is CrowdStrike AIDR’s format-preserving encryption, where the gateway passes an fpe_context from the input leg to AIDR’s /v1/unredact endpoint on the output leg. If you need the real value downstream, hold it in your application.
Can I deploy TrueFoundry in my own VPC or on-prem?
Yes. TrueFoundry runs in your VPC, on-prem, air-gapped, or hybrid, so prompts and responses never leave your domain even as you route across many providers.
Ondersteunt TrueFoundry MCP en AI-agents in het algemeen?
Ja. Het omvat een MCP Gateway, een Agent Gateway, en een MCP & Agents Register met toegangscontrole op toolniveau. Agents op LangGraph, CrewAI, AutoGen, of een aangepast framework kunnen allemaal centraal worden gereguleerd.
Integreert het met mijn bestaande observability-stack?
Ja. De gateway is OpenTelemetry-compliant en sluit aan op Grafana, Datadog, Prometheus, of uw gewenste stack. Het traceert elk verzoek van prompt tot tool- en modeluitvoering, zodat u uniforme logging krijgt zonder wat u al draait te hoeven vervangen.












.png)

.webp)



.webp)








.webp)





