Dokumentacja

Ochrona danych

Tryby wykrywania, biblioteka 60 detektorów, wykrywanie encji z modelami do wyboru, skanowanie bezpieczeństwa, powiadomienie modelu i retencja.

Ochrona danych działa na każdym żądaniu przed wysyłką. Domyślny tryb to tokenize: każda wykryta wartość jest zamieniana na stabilny typizowany token, taki jak «EMAIL_1». Do dostawcy trafiają wyłącznie tokeny, a w drodze powrotnej do Ciebie odpowiedź jest przywracana do prawdziwych wartości, niezależnie od tego, czy jest strumieniowana. Mapa tokenów żyje w pamięci przez czas trwania żądania i nigdy nie jest utrwalana.

# tokenize mode (the default): what you send
curl https://api.sluis.ai/v1/chat/completions \
  -H "Authorization: Bearer $SLUIS_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "model": "sluis/auto", "messages": [{ "role": "user",
        "content": "Mail j.devries@acme.nl that IBAN NL91ABNA0417164300 is active." }] }'

Inne tryby: mask nieodwracalnie przepisuje wykryte wartości, block odrzuca żądanie z kodem 422, a allow_log przepuszcza je, oznaczając wpis w audycie.

60 wbudowanych detektorów działa od ręki: 28 dla danych osobowych, od amerykańskiego numeru SSN po pakiet krajowych numerów identyfikacyjnych z walidacją sumą kontrolną dla 12 krajów UE, oraz 32 dla sekretów i poświadczeń. Każdy można włączać per organizacja, a terminy własne (zwykłe lub regex) obejmują wszystko, co specyficzne dla Twojej firmy:

Dane osobowe · 28EmailPhone numberIBANCredit cardIPv4 addressIPv6 addressMAC addressUS Social Security numberDutch BSNPortuguese NIFGerman Steuer-IDPolish PESELBelgian rijksregisternummerFrench NIR (INSEE)Spanish DNI/NIEItalian codice fiscaleSwedish personnummerDanish CPR numberFinnish henkilötunnusUK National Insurance numberEU VAT numberBIC/SWIFT codeDutch license plateDutch addressPassport numberDate of birthGPS coordinatesVehicle identification number
Sekrety i poświadczenia · 32API key (generic)AWS access keyAWS secret access keyPrivate key (PEM)GitHub tokenGitLab tokenSlack tokenSlack webhook URLDiscord webhook URLGoogle API keyGoogle OAuth refresh tokenStripe keyMollie API keyAnthropic API keyOpenAI API keySluis keyHugging Face tokennpm tokenSendGrid keyTwilio keyShopify tokenVault tokenDatabricks tokenDocker Hub tokenTelegram bot tokenJSON Web TokenCredentials in URL.env file dumpAzure storage key / SASPassword assignmentConfidentiality markerHigh-entropy token (generic)

Wykrywanie encji

Osoby, organizacje i lokalizacje trudno wychwycić samym wzorcem. Sluis dodaje pięć opcjonalnych warstw: heurystyki kontekstowe (tytuły grzecznościowe, zwroty, podpisy; tylko osoby), korelację e-mail (wyprowadza nazwiska z adresów w tym samym tekście), katalog nazwisk tenanta, dostarczany słownik nazwisk oraz NER: model rozpoznawania obsługiwany przez Sluis jako wewnątrzsieciowy sidecar, więc tekst nigdy nie opuszcza perymetru wdrożenia w celu przeskanowania. NER znajduje osoby, organizacje i lokalizacje w zwykłej prozie.

Słownik nazwisk to deterministyczny odpowiednik NER: imiona i nazwiska skompilowane z rządowych danych otwartych w słownik dostarczany wewnątrz bramy. Wychwytuje pełne imiona i nazwiska oraz nazwiska poprzedzone tytułem grzecznościowym, bez dodatkowych opóźnień i bez wysyłania czegokolwiek poza Twój perymetr. Nazwiska będące zarazem zwykłymi wyrazami są wychwytywane tylko w kontekście o kształcie nazwiska; rzadkie nazwiska pozostają zadaniem katalogu lub NER.

Modele NER do wyboru

Dwa poziomy równoważą opóźnienie i skuteczność wykrywania: swift (spaCy xx_ent_wiki_sm) odpowiada w kilka milisekund z podstawowym pokryciem wielojęzycznym; deep (GLiNER2-PII na bazie mDeBERTa-v3, Apache-2.0) wykrywa wyraźnie więcej, przy wyższym opóźnieniu na analizowany segment. Wybierz per organizacja w Polityki → Ochrona danych; klucz może wybrać inny model przez swoje option overrides, ale nigdy nie może włączyć warstwy, gdy organizacja trzyma ją wyłączoną.

ModelPokrycieZmierzona dokładnośćOpóźnienie
swift · spaCy xx_ent_wiki_smmultilingual, basicall-entity F1 0.58 · person F1 0.72 · recall ~0.53~7-14 ms
deep · GLiNER2-PII (mDeBERTa-v3, Apache-2.0)7 trained languages (EN, FR, ES, DE, IT, PT, NL) + multilingual backbone transferall-entity F1 0.61 · person F1 0.76 · recall ~0.70~150-250 ms per scanned segment

Zmierzono 2026-08-12 na wewnętrznym benchmarku: zdania testowe WikiANN w sześciu językach (NL, EN, DE, FR, ES, IT; 150 na język), oceniane jako mikro-F1 na parach (etykieta, tekst) na poziomie tekstu z zastosowanym produkcyjnym filtrem fałszywych trafień, na deweloperskiej maszynie Apple Silicon w FP32. WikiANN to automatycznie anotowany materiał z Wikipedii i teren treningowy spaCy: czytaj te liczby jako względną wskazówkę między poziomami, nie jako absolutną dokładność w terenie.

Skanowanie bezpieczeństwa

Opcjonalne wykrywanie prompt injection i jailbreaków przy śluzie, analizowane przed wysyłką. Trzy tryby: off | log | block. log zapisuje trafienia w dzienniku audytu bez dotykania ruchu; block odrzuca żądanie zapieczętowanym 403 permission_error ("request refused: prompt-injection scan flagged this request"). Próg zadziałania konfiguruje się per organizacja, a skan zawodzi w trybie otwartym: awaria skanera nigdy nie zatrzymuje ruchu.

Skan dodaje około 20 ms przy krótkim promptcie i około 620 ms przy długim (1500 znaków), zmierzone na wewnętrznym benchmarku; najgorszy przypadek jest ograniczony, bo skaner limituje liczbę okien po 512 tokenów ocenianych na żądanie. Działa równolegle ze skanem NER, więc łączne dodane opóźnienie jest bliskie większemu z dwóch, nie sumie. Wykrywanie to klasyfikator, nie dowód: niewinny tekst przypominający instrukcję może zostać oceniony jako injection, znana w całej branży rzeczywistość, dlatego log to zalecany tryb startowy.

Każde trafienie jest ujawniane w dzienniku audytu jako sec:injection:<score>, więc przegląd nie wymaga dodatkowych narzędzi. Odstępstwa per klucz idą przez te same option overrides co ochrona danych.

Built with Llama. The scan model is Llama Prompt Guard 2 86M (multilingual), used under the Llama 4 Community License.

Osobno opcjonalne wykrywanie anomalii zachowania kluczy działa jako zadanie w tle, bez żadnego opóźnienia żądań: linie bazowe per klucz z odpornych statystyk z sezonowością godzina-tygodnia, plus wielowymiarowa warstwa isolation forest. Alerty są wyjaśnialne, nigdy goły wynik, i trafiają do zakładki Bezpieczeństwo w konsoli, opcjonalnie e-mailem.

Powiadomienie dla modelu

Gdy tokenizacja przepisała żądanie, Sluis wstrzykuje na początku wiadomość systemową informującą model, że tokeny «…» to nieprzezroczyste symbole zastępcze, które musi zachować w nienaruszonym stanie; to właśnie zapewnia niezawodne przywracanie. Domyślnie włączone; dostosuj lub wyłącz per organizacja.

Retencja i wierność audytu

Retencja treści (body żądań i odpowiedzi dla dziennika audytu) jest domyślnie włączona i szyfrowana w spoczynku; wierność audytu decyduje, czy zachowana treść przechowuje tokeny, czy wartości oryginalne. Wyłącz retencję, by mieć rejestr wyłącznie z metadanymi; to wyłącza także cache'e odpowiedzi.

Anonimizacja dokumentów

Wyślij plik docx, pdf, obraz lub tekst na POST /v1/documents/anonymize a ten sam dokument wraca z PII i sekretami zastąpionymi znacznikami jak «PERSON_NAME_1» w tekście oraz rozmytymi na obrazach i stronach PDF. Przetwarzanie pozostaje lokalne w gateway, wraz z OCR; operacja jest pieczętowana w łańcuchu audytu i rozliczana za stronę/obraz. Mapa tokenów jest zwracana tylko na żądanie i nigdy nie jest przechowywana. Zredagowane PDF-y zachowują niewidoczną, przeszukiwalną warstwę tekstu zbudowaną z zanonimizowanego tekstu. Dla dużych dokumentów zakolejkuj zadanie asynchroniczne i odbierz wynik później przez podpisany URL o ograniczonej ważności.

Ta sama ochrona działa w tranzycie: z włączoną polityką dlp_documents pliki wysyłane przez /v1/files i dokumenty OCR inline są anonimizowane zanim wyjdą do dostawcy, odrzucane w trybie block i skanowane w trybie allow_log.

# enqueue a large document (202 + job id; Idempotency-Key honoured)
curl https://api.sluis.ai/v1/documents/anonymize/jobs \
  -H "Authorization: Bearer $SLUIS_KEY" \
  -F file=@archive.pdf

# poll until succeeded; the signed download_url then needs no API key
curl https://api.sluis.ai/v1/documents/anonymize/jobs/9c31… \
  -H "Authorization: Bearer $SLUIS_KEY"

Embeddingi

Pseudonimizowane tokeny są stabilne w obrębie jednego żądania, nie między żądaniami; embeddingi tokenizowanego tekstu mogą się więc różnić między wywołaniami. Ustawienie dlp_embeddings decyduje, czy skanowanie obejmuje /v1/embeddings: domyślnie włączone, ustawienie na off wysyła dane wejściowe embeddingów do dostawcy bez skanowania. Każde zwolnione wywołanie jest odnotowane w dzienniku audytu.

Option overrides per klucz

Nadpisania nagłówkiem żądania zniknęły: odstępstwa to stała, zarządzana konfiguracja klucza. Owner lub admin ustawia rzadkie option_overrides na kluczu, w widoku API keys Konsoli lub przez POST/PUT /admin/keys: tryb ochrony danych (łącznie z off), model NER i tryb skanowania injection. Wszystko nieustawione dziedziczy politykę organizacji, a klucz nigdy nie może włączyć warstwy, którą organizacja trzyma wyłączoną.

# per-key option overrides are standing key config, set by an owner or admin
curl -X PUT https://api.sluis.ai/admin/keys/{key_id} \
  -H "Authorization: Bearer $SLUIS_ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "option_overrides": {
        "dlp": { "mode": "off" },
        "ner_model": "deep",
        "security": { "prompt_injection": { "mode": "block" } } } }'
# sparse: absent fields inherit org policy; every deviation is sealed in the audit trail

Nagłówek żądania x-sluis-dlp został usunięty. Żądanie, które wciąż go niesie, z dowolną wartością, jest odrzucane z 400 i wskazaniem na option overrides klucza. Każde obowiązujące odstępstwo jest ujawniane w zapieczętowanym wierszu audytu, więc dziennik zawsze pokazuje, która konfiguracja faktycznie zadziałała.