Kontrola dostępu w RAG — jak nie dać jednemu klientowi czytać danych drugiego
Nowy preprint arXiv (2606.19803) opisuje framework drobnoziarnistej kontroli dostępu (FGAC) dla wektorowych baz danych. Problem jest realny: standardowe bazy wektorowe nie wiedzą, który użytkownik zadaje pytanie, więc RAG może zwrócić dokumenty, których dany użytkownik nie powinien widzieć.
Wektorowe bazy danych takie jak pgvector, Qdrant czy Weaviate świetnie odnajdują semantycznie podobne fragmenty tekstu — ale nie mają wbudowanego mechanizmu sprawdzania, czy konkretny użytkownik ma prawo zobaczyć wyniki. W środowiskach multi-tenant (np. jeden system ERP obsługujący wielu klientów) to poważna luka: RAG może zwrócić dane jednej firmy do użytkownika z innej.
Jak działa proponowany FGAC
Autorzy definiują politykę dostępu jako trzy elementy:
- Object constraints — predykaty na metadanych dokumentu (np.
klient_id = 'firma_X') - Subject constraints — atrybuty osoby pytającej (jej rola, dział, poziom uprawnień)
- Decyzja — allow lub deny
Następnie porównują cztery strategie wymuszania tej polityki przy wyszukiwaniu semantycznym:
| Strategia | Kiedy filtrować | Kompromis |
|---|---|---|
| Pre-filtering | Przed ANN search | Wysoka precyzja, słaby recall przy restrykcyjnych politykach |
| Post-filtering | Po ANN search | Dobry recall, ale marnuje zasoby na wyliczenie niedozwolonych wyników |
| Iterative | Wielokrotne ANN z rozszerzanym k | Dobry balans, wyższe koszty latencji |
| Parallel filtering | Równoległe zapytania z wariantami | Najlepszy recall, ale duże zużycie zasobów |
Autorzy proponują cost-based optimizer, który dynamicznie wybiera strategię zależnie od charakterystyki zapytania (selektywność polityki, rozmiar indeksu, wymagany recall).
Dlaczego to pilne
Przy standardowym podejściu (brak filtrowania) wystarczy jedno osadzone zdanie z dokumentu innego klienta, by RAG „wyciekł" informacje do nieuprawnionego użytkownika — bez żadnego błędu w logach. To szczególnie groźne, gdy dane wektoryzuje się razem (np. umowy, specyfikacje produkcyjne różnych kontrahentów w jednym indeksie).