Ho un motore di ricerca ElasticSearch e un'applicazione web interna. Prima di applicare il modello di sicurezza, i risultati di ricerca erano molto veloci. Il modello di sicurezza impedisce ad alcuni utenti di accedere a determinate pagine. Abbiamo 7 "tipi" di pagine.
Il nostro processo è attualmente questo:
- Il motore di ricerca interroga tutti i record
- Per ogni tipo di risultato, ottengo tutti i recordId di quel tipo dal database a cui l'utente è autorizzato ad accedere. Ciò garantisce che richiami il database solo fino a 7 volte (una volta per tipo)
- Faccio un incrocio tra i record a cui l'utente può accedere e la ricerca dei record sta tornando
L'approccio sopra descritto non è abbastanza veloce. Ho una ricerca automatica e ogni query richiede fino a 2 secondi.
Che cosa è un modo tipico per far sì che un motore di ricerca restituisca risultati conformi alla sicurezza? Un altro sviluppatore ha raccomandato di archiviare le autorizzazioni di sicurezza direttamente in ElasticSearch stesso (essenzialmente il mirroring di ciò che ha il nostro server sql).
Modifica: ogni record ha una pagina. Possiamo assumere 200-500 utenti e 25000+ record.