<!-- Veiligheidsgaranties -->
<!-- canonical: https://plainwater.ai/nl/wiki/veiligheid/garanties -->
# Veiligheidsgaranties

De regel van Plainwater AI: **een garantie is pas een garantie als er een test op staat.** Hieronder staat wat het
platform belooft, in gewone taal. Elke belofte op deze pagina wordt bij elke wijziging van het platform automatisch
getest.

## Wat een agent nooit krijgt

- **Geen sleutel van een modelleverancier.** Een agent praat met modellen via de [AI-poort](https://plainwater.ai/nl/wiki/concepten/ai-poort),
  nooit rechtstreeks.
- **Geen wachtwoord van een klantdatabase.** Een agent krijgt alleen een eenmalige opstartcode waarmee hij zich bij het
  platform meldt. Verbinden met een bron doet het platform zelf.
- **Geen vrije toegang tot internet.** Agents draaien in geïsoleerde containers. Uitgaand verkeer loopt via een
  allowlist.

## Elk modelverzoek, één besluit

Elk verzoek aan een model krijgt precies één beleidsbesluit. Een geweigerd verzoek bereikt de leverancier niet. Regels
zijn handhaving in de poort en geen instructie in de prompt: een model kan ze niet "vergeten". Ingebouwde tools van de
leverancier die buiten het platform om zouden werken, worden uit het verzoek gehaald.

## Geen rijen in de stand "alleen metrics"

Staat een bron op **alleen metrics**, dan antwoorden de leestools met metadata, tellingen en aggregaten. Ze geven geen
rijen, geen losse waarden en geen businessgegevens terug. Tellingen onder tien worden "<10". De testdatabase bevat
herkenbare markerwaarden, en een test roept elke leestool aan en bewijst dat geen enkele marker in de uitvoer
terechtkomt.

## Een naam is ook data

Bij een klant met echte data gaan tabel- en kolomnamen als pseudoniem naar het model. Zie
[pseudonimisering](https://plainwater.ai/nl/wiki/concepten/pseudonimisering). Elk tekstveld in elke toolaanroep heeft een vastgelegde betekenis;
een veld zonder die verklaring laat de aanroep mislukken. Een klant met echte klantdata draait alleen met actieve
pseudonimisering. Anders start de agent niet, en elke aanroep wordt opnieuw gecontroleerd.

## Geheimen

- Wachtwoorden van bronnen worden per bron versleuteld met een eigen afgeleide sleutel.
- De app geeft nooit een geheim terug, alleen een vingerafdruk en het moment waarop het is ingesteld.
- Geheimen staan nooit in een log, een foutmelding of een audit.

## Klanten zijn van elkaar gescheiden

Probeert iemand een andere klant te benaderen, dan antwoordt het platform met **404, niet 403**. Het verschil tussen
"bestaat niet" en "mag niet" verklapt al dat iets bestaat. Ook een weigering naar een model noemt nooit de naam van een
bron van de klant.

## Rechten komen uit de database

Wat iemand mag, leest het platform bij elke aanroep uit de database, nooit uit het verzoek zelf. Een onbekende of
inactieve gebruiker mag niets. Niemand wijzigt zijn eigen rollen, ook een beheerder niet. Zie
[rollen en rechten](https://plainwater.ai/nl/wiki/beheer/rollen-en-rechten).

## HTML van agents draait apart

Dashboards en andere HTML die een agent maakt, draaien op een **apart domein**, nooit binnen de applicatie zelf. Zo kan
code van een agent niet bij de sessie van de gebruiker.

## De sandbox is een kooi

Vrije SQL draait op een wegwerpkopie, in een transactie die altijd wordt teruggedraaid, met vaste grenzen voor kolommen,
rijen, tijd en aantal aanroepen. De naam van de kopie komt van het platform, nooit van de agent. Zie
[de verificatiesandbox](https://plainwater.ai/nl/wiki/concepten/sandbox).

## Het platform kijkt zelf mee

Elke geweigerde toegang wordt een meetpunt. Een securitymonitor herkent patronen zoals aftasten, nachtwerk zonder
historie, een golf verwijderingen of een snel opbrandend budget, en maakt daar een alert van. Een poging om je eigen
rechten te verhogen is direct kritiek.

## Overzicht

| Garantie | Wat er gebeurt als het misgaat |
| --- | --- |
| Agent krijgt geen sleutels | De test faalt; de wijziging gaat niet live |
| Eén besluit per modelverzoek | Een verzoek zonder besluit wordt niet doorgestuurd |
| Geen rijen in "alleen metrics" | De markertest faalt |
| Cross-tenant 404 | De test faalt |
| Agent-HTML op apart domein | De test faalt |

## Voorbeeld

Een agent probeert in de stand "alleen metrics" met een slimme query toch de tien grootste klanten op te halen. De
leestool kent geen vrije query, dus die weg bestaat niet. Hij probeert het via de sandbox. Daar staat de bron
dicht voor rijen, dus wordt de aanroep geweigerd. De weigering staat in de audit. Als het patroon zich herhaalt, komt
er een alert bij de beheerder.

:::tip Lees verder
- [Audit, transcripten en bewaartermijn](https://plainwater.ai/nl/wiki/veiligheid/audit)
- [Europese verwerking en hosting](https://plainwater.ai/nl/wiki/veiligheid/europa)
:::
