Wyszukiwanie, które znajduje dokument, do którego użytkownik nie ma dostępu, już poniosło porażkę, nawet jeśli interfejs ukrywa końcowy link. W systemach dokumentowych, sprawach, systemach zaplecza i bazach wiedzy ryzyko pojawia się wcześniej: w indeksie, w odzyskanych fragmentach, w wyświetlanych metadanych oraz w odpowiedzi generowanej na podstawie nieautoryzowanego kontekstu.
Wyszukiwanie semantyczne z uprawnieniami w PHP musi traktować autoryzację jako część procesu wyszukiwania, a nie jako dekoracyjną kontrolę w widoku. Celem jest nie tylko zwracanie użytecznych wyników, lecz także zagwarantowanie, że każdy kandydacki fragment, cytat i odpowiedź wynikają wyłącznie z treści, do których uwierzytelniony podmiot może w danym momencie uzyskać dostęp.
Decyzje, które należy podjąć przed indeksowaniem

Zacznij od zdefiniowania korpusu i jego modelu dostępu. Nie wszystkie treści mają ten sam cykl życia ani tę samą wrażliwość: polityka publiczna, podręcznik wewnętrzny, sprawa i plik udostępniony zewnętrznie wymagają różnych reguł. Należy też zdecydować, jakie działanie umożliwia wyszukiwanie: znalezienie tytułu, przeczytanie wyciągu, otwarcie dokumentu, pobranie załącznika czy zażądanie podsumowania. Uprawnienie do odkrywania nie musi oznaczać uprawnienia do odczytu.
- Podmiot uwierzytelniony: użytkownik, konto usługi lub delegowana sesja wykonująca zapytanie.
- Zakres: organizacja, przestrzeń robocza, projekt, sprawa lub repozytorium, w których można wyszukiwać.
- Działanie: odkrywanie, odczyt, pobieranie lub administrowanie.
- Zasób: dokument i fragment wraz z ich stanem, klasyfikacją i przynależnością.
- Tolerancja błędów: w autoryzacji priorytetem musi być brak ujawnienia; fałszywie negatywny wynik jest uciążliwy, fałszywie pozytywny może być naruszeniem bezpieczeństwa.
Podobieństwo wektorowe nie rozumie reguł biznesowych. Embedding reprezentuje bliskość znaczeniową, a nie zasadność dostępu. Dlatego projekt nie może zakładać, że „podobny” wynik jest bezpieczny ani że model generatywny zignoruje niewłaściwy kontekst.
Architektura referencyjna i źródło prawdy
Przechowuj uprawnienia w transakcyjnym źródle prawdy: aplikacji PHP, jej bazie danych lub systemie dokumentowym zarządzającym zasobami. Indeks jest możliwą do odtworzenia projekcją, a nie organem decydującym o dostępie. Jeśli indeks zostanie uszkodzony, opóźniony lub otrzyma niepełne dane, warstwa autoryzacji musi móc zablokować udostępnienie.
Solidny przepływ rozdziela cztery etapy:
- Treść jest pobierana z identyfikowalnej wersji dokumentu i dzielona na fragmenty o spójnych granicach.
- Obliczane są reprezentacje wyszukiwania i zapisywane wraz z metadanymi zakresu oraz wersji.
- Zapytanie buduje filtr wynikający z autoryzacji dla podmiotu uwierzytelnionego i odzyskuje kandydatów wyłącznie w tym zakresie.
- Aplikacja ponownie sprawdza uprawnienie i aktualność każdego kandydata przed jego wyświetleniem lub użyciem jako kontekstu.
W PHP hermetyzuj te odpowiedzialności. Usługa polityk powinna rozstrzygać can($principal, 'read', $dokument); adapter indeksu powinien otrzymywać filtry wynikające z tej decyzji; a komponent składający wyniki powinien akceptować wyłącznie zweryfikowanych kandydatów. Nie pozwalaj, aby kontrolery, szablony lub prompty samodzielnie składały filtry uprawnień.
Metadane umożliwiające filtrowanie bez zgadywania
Każdy dokument i fragment potrzebuje stabilnego identyfikatora organizacji i zasobu, wersji treści, stanu indeksowania oraz referencji do dokumentu nadrzędnego. Dodaj atrybuty niezbędne do wyrażenia polityki, ale nie replikuj wrażliwych danych bez potrzeby.
- tenant_id lub organizacja: obowiązkowa bariera w środowiskach wieloklientowych.
- document_id i chunk_id: śledzalność od wyniku do źródła.
- acl_revision: wersja polityki zastosowanej podczas indeksowania.
- audience: prosty zakres, taki jak dostępny wewnętrznie, zespół, projekt lub sprawa.
- lifecycle_state: aktywny, zarchiwizowany, usunięty lub oczekujący na przegląd.
- content_revision: zapobiega cytowaniu wersji, która została już zastąpiona.
Nie indeksuj gigantycznej listy użytkowników dla każdego fragmentu, jeśli polityka opiera się na zmieniających się grupach: zwiększa to koszt, ujawnia relacje i źle się starzeje. Jeśli to możliwe, lepiej filtrować według stabilnych zakresów i rozstrzygać wyjątki podczas późniejszej weryfikacji. Jeśli silnik wyszukiwania nie obsługuje wiarygodnych filtrów, nie powinien otrzymywać treści z wielu zakresów bezpieczeństwa w tej samej przeszukiwalnej przestrzeni.
Filtrowanie przed wyszukiwaniem i weryfikacja po nim
Wstępne filtrowanie zmniejsza powierzchnię ekspozycji: zapytanie semantyczne musi uwzględniać organizację, aktywny stan i dozwolone zakresy przed obliczeniem końcowych kandydatów. Zapobiega to wpływowi zakazanego tekstu na ranking, wyciągi lub kontekst odpowiedzi wspomaganej.
Późniejsza weryfikacja nadal jest konieczna. Uprawnienia mogą zmienić się między zapytaniem a odczytem, dziedziczenie może zależeć od danych nieujętych w projekcji lub indeks może być opóźniony. Dla każdego kandydata pobierz aktualny dokument albo odwołaj się do pamięci podręcznej autoryzacji z bezpiecznym mechanizmem unieważniania. Jeśli kontrola się nie powiedzie, odrzuć fragment bez ujawniania jego tytułu, oceny ani istnienia.
Gdy występuje generowanie wspomagane, przekazuj modelowi wyłącznie fragmenty już autoryzowane i zweryfikowane. Zdefiniuj konkretny przypadek użycia, na przykład podsumowywanie odzyskanych wyników; oceniaj odpowiedzi na przypadkach dozwolonych i zabronionych; zachowuj weryfikowalne cytaty; ograniczaj koszt na zapytanie; oraz utrzymuj alternatywę niegeneratywną, taką jak lista wyników. Model nie zastępuje polityki dostępu ani kontroli człowieka nad wrażliwymi treściami.
Dziedziczenie, linki i cofnięcia dostępu, które łamią proste projekty
Grupy, dziedziczone foldery i udostępnione linki wprowadzają pośrednie zmiany. Osoba opuszczająca grupę, dokument zmieniający folder lub wygasający link muszą wpływać zarówno na otwieranie, jak i wyszukiwanie. Modeluj jawnie pierwszeństwo między uprawnieniami bezpośrednimi, dziedziczeniem i odmowami oraz testuj konflikty.
Cofnięcia dostępu wymagają bardziej rygorystycznej strategii niż nadania. Publikuj zdarzenia zmiany treści i ACL za pośrednictwem kolejki transakcyjnej lub dziennika zmian; worker przelicza metadane oraz usuwa lub ponownie indeksuje fragmenty. Dopóki indeks nie osiągnie spójności, późniejsza weryfikacja chroni udostępnienie. W przypadku usunięć natychmiast oznacz zasób jako niedostępny w źródle prawdy i asynchronicznie usuwaj jego fragmenty, z alertami, jeśli opóźnienie przekroczy cel operacyjny.
Weryfikowalne wyniki, testy i obserwowalność
Wyświetlaj tytuł, ograniczony wyciąg, lokalizację i datę tylko wtedy, gdy te pola również są czytelne. Każdy wynik musi prowadzić do oryginalnego autoryzowanego zasobu; cytat nie może ujawniać ścieżki, autora ani tekstu ukrytego dokumentu. W przypadku braku wyników używaj neutralnego komunikatu: nie potwierdzaj, czy poza zakresem użytkownika istnieje jakakolwiek treść.
Zbuduj macierz testów z użytkownikami z różnych organizacji, członkami i nieczłonkami grup, ograniczonymi administratorami, wygasłymi linkami oraz zasobami, do których dostęp cofnięto podczas sesji. Testuj bezpośrednie zapytania, synonimy, rzadkie terminy i pytania zaprojektowane tak, aby przyciągać zabronione treści. Oczekiwane wyniki obejmują puste listy, gdy cała istotna treść jest zablokowana.
Rejestruj, bez przechowywania niepotrzebnych wrażliwych zapytań, wersję indeksu, zastosowane filtry, liczbę kandydatów przed i po weryfikacji, opóźnienie, odmowy oraz opóźnienie synchronizacji. Wzrost liczby późniejszych odrzuceń może wskazywać na nieaktualne ACL; zero wyników po migracji może sygnalizować nadmierne filtry; zapytania między organizacjami są alertem izolacji.
Kiedy wybrać inne rozwiązanie i lista końcowa

Wyszukiwanie semantyczne nie zawsze się opłaca. W przypadku małych katalogów i stabilnego słownictwa filtry, wyszukiwanie tekstowe i nawigacja hierarchiczna są łatwiejsze do wyjaśnienia i tańsze. Są one również preferowane, gdy uprawnienia są bardzo dynamiczne, a silnik nie może bezpiecznie filtrować według atrybutów. Używaj wyszukiwania semantycznego, gdy wnosi rzeczywistą wartość do zapytań formułowanych w języku naturalnym i można utrzymać pełną kontrolę dostępu.
- Źródło prawdy decyduje o dostępie, a indeks można odbudować.
- Wszystkie fragmenty mają organizację, dokument, wersję i stan.
- Zapytanie filtruje przed wyszukiwaniem i weryfikuje przed udostępnieniem.
- Nadania, zmiany, cofnięcia dostępu i usunięcia mają obserwowalną synchronizację.
- Odpowiedzi wspomagane używają wyłącznie autoryzowanego kontekstu, cytatów i alternatywy bez AI.
- Testy obejmują celowe próby nieuprawnionego dostępu i puste wyniki.



