Jak zabezpieczyć system RAG?
Najważniejsza zasada: użytkownik nie powinien otrzymać przez RAG treści, do których nie ma dostępu w systemie źródłowym. Kontrola musi działać przed przekazaniem kontekstu do modelu.
Uprawnienia przed retrieval
Filtrowanie źródeł powinno uwzględniać rolę użytkownika, tenant, typ dokumentu i inne ograniczenia dostępu zanim wyszukane fragmenty trafią do promptu. Ukrywanie treści dopiero po wygenerowaniu odpowiedzi jest za późne.
Minimalizuj kontekst
Do modelu przekazuj tylko fragmenty potrzebne do odpowiedzi. Ogranicza to zarówno ryzyko wycieku, jak i ilość nieistotnych danych mogących pogorszyć jakość odpowiedzi.
Traktuj dokumenty jak dane wejściowe
Źródło RAG może zawierać treść próbującą wpływać na zachowanie modelu. Dlatego instrukcje systemowe, uprawnienia i logika narzędzi nie powinny być nadpisywane przez tekst znaleziony w dokumentach.
Co logować
- Tożsamość lub rolę użytkownika.
- Identyfikatory źródeł użytych do odpowiedzi.
- Wynik filtrów uprawnień.
- Błędy retrievalu i przypadki bez odpowiedzi.
- Zdarzenia wymagające analizy bezpieczeństwa.
Testy przed uruchomieniem
Sprawdź próby odczytu dokumentów innego użytkownika lub tenantu, zapytania o dane nieuprawnione, złośliwe instrukcje w źródłach oraz sytuacje, w których system powinien odmówić odpowiedzi.
Źródła referencyjne
- OWASP LLM Prompt Injection Prevention Cheat Sheet — praktyki dotyczące prompt injection, najmniejszych uprawnień i monitorowania.
- OWASP Top 10 for LLM Applications / GenAI Security Project — kategorie ryzyka, m.in. prompt injection, ujawnienie informacji i nadmierna autonomia.
- NIST AI 600-1: Generative AI Profile — działania związane z zarządzaniem ryzykiem generatywnej AI.